{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p style=\"font-size:32px;text-align:center\"> <b>Social network Graph Link Prediction - Facebook Challenge</b> </p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Problem statement: \n",
    "Given a directed social graph, have to predict missing links to recommend users (Link Prediction in graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Data Overview\n",
    "Taken data from facebook's recruting challenge on kaggle https://www.kaggle.com/c/FacebookRecruiting  \n",
    "data contains two columns source and destination eac edge in graph \n",
    "    - Data columns (total 2 columns):  \n",
    "    - source_node         int64  \n",
    "    - destination_node    int64  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Mapping the problem into supervised learning problem:\n",
    "- Generated training samples of good and bad links from given directed graph and for each link got some features like no of followers, is he followed back, page rank, katz score, adar index, some svd fetures of adj matrix, some weight features etc. and trained ml model based on these features to predict link. \n",
    "- Some reference papers and videos :  \n",
    "    - https://www.cs.cornell.edu/home/kleinber/link-pred.pdf\n",
    "    - https://www3.nd.edu/~dial/publications/lichtenwalter2010new.pdf\n",
    "    - https://kaggle2.blob.core.windows.net/forum-message-attachments/2594/supervised_link_prediction.pdf\n",
    "    - https://www.youtube.com/watch?v=2M77Hgy17cg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Business objectives and constraints:  \n",
    "- No low-latency requirement.\n",
    "- Probability of prediction is useful to recommend ighest probability links"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Performance metric for supervised learning:  \n",
    "- Both precision and recall is important so F1 score is good choice\n",
    "- Confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Importing Libraries\n",
    "# please do go through this python notebook: \n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "import csv\n",
    "import pandas as pd#pandas to create small dataframes \n",
    "import datetime #Convert to unix time\n",
    "import time #Convert to unix time\n",
    "# if numpy is not installed already : pip3 install numpy\n",
    "import numpy as np#Do aritmetic operations on arrays\n",
    "# matplotlib: used to plot graphs\n",
    "import matplotlib\n",
    "import matplotlib.pylab as plt\n",
    "import seaborn as sns#Plots\n",
    "from matplotlib import rcParams#Size of plots  \n",
    "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n",
    "import math\n",
    "import pickle\n",
    "import os\n",
    "# to install xgboost: pip3 install xgboost\n",
    "import xgboost as xgb\n",
    "\n",
    "import warnings\n",
    "import networkx as nx\n",
    "import pdb\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Name: \n",
      "Type: DiGraph\n",
      "Number of nodes: 1862220\n",
      "Number of edges: 9437519\n",
      "Average in degree:   5.0679\n",
      "Average out degree:   5.0679\n"
     ]
    }
   ],
   "source": [
    "#reading graph\n",
    "if not os.path.isfile('train_woheader.csv'):\n",
    "    traincsv = pd.read_csv('train.csv')\n",
    "    print(traincsv[traincsv.isna().any(1)])\n",
    "    print(traincsv.info())\n",
    "    print(\"Number of diplicate entries: \",sum(traincsv.duplicated()))\n",
    "    traincsv.to_csv('train_woheader.csv',header=False,index=False)\n",
    "    print(\"saved the graph into file\")\n",
    "else:\n",
    "    g=nx.read_edgelist('train_woheader.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n",
    "    print(nx.info(g))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Name: \n",
      "Type: DiGraph\n",
      "Number of nodes: 66\n",
      "Number of edges: 50\n",
      "Average in degree:   0.7576\n",
      "Average out degree:   0.7576\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "if not os.path.isfile('train_woheader_sample.csv'):\n",
    "    pd.read_csv('train.csv', nrows=50).to_csv('train_woheader_sample.csv',header=False,index=False)\n",
    "    \n",
    "subgraph=nx.read_edgelist('train_woheader_sample.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n",
    "# https://stackoverflow.com/questions/9402255/drawing-a-huge-graph-with-networkx-and-matplotlib\n",
    "\n",
    "pos=nx.spring_layout(subgraph)\n",
    "nx.draw(subgraph,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,edge_cmap=plt.cm.Blues,with_labels=True)\n",
    "plt.savefig(\"graph_sample.pdf\")\n",
    "print(nx.info(subgraph))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Exploratory Data Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The number of unique persons 1862220\n"
     ]
    }
   ],
   "source": [
    "# No of Unique persons \n",
    "print(\"The number of unique persons\",len(g.nodes()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.1 No of followers for each person"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "indegree_dist = list(dict(g.in_degree()).values())\n",
    "indegree_dist.sort()\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(indegree_dist)\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of Followers')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "indegree_dist = list(dict(g.in_degree()).values())\n",
    "indegree_dist.sort()\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(indegree_dist[0:1500000])\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of Followers')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.boxplot(indegree_dist)\n",
    "plt.ylabel('No Of Followers')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "90 percentile value is 12.0\n",
      "91 percentile value is 13.0\n",
      "92 percentile value is 14.0\n",
      "93 percentile value is 15.0\n",
      "94 percentile value is 17.0\n",
      "95 percentile value is 19.0\n",
      "96 percentile value is 21.0\n",
      "97 percentile value is 24.0\n",
      "98 percentile value is 29.0\n",
      "99 percentile value is 40.0\n",
      "100 percentile value is 552.0\n"
     ]
    }
   ],
   "source": [
    "### 90-100 percentile\n",
    "for i in range(0,11):\n",
    "    print(90+i,'percentile value is',np.percentile(indegree_dist,90+i))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "99.1 percentile value is 42.0\n",
      "99.2 percentile value is 44.0\n",
      "99.3 percentile value is 47.0\n",
      "99.4 percentile value is 50.0\n",
      "99.5 percentile value is 55.0\n",
      "99.6 percentile value is 61.0\n",
      "99.7 percentile value is 70.0\n",
      "99.8 percentile value is 84.0\n",
      "99.9 percentile value is 112.0\n",
      "100.0 percentile value is 552.0\n"
     ]
    }
   ],
   "source": [
    "### 99-100 percentile\n",
    "for i in range(10,110,10):\n",
    "    print(99+(i/100),'percentile value is',np.percentile(indegree_dist,99+(i/100)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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NIzIdTqdWrVq1RHPnXPO+ycZL1y4UAsXLjxi/LTTThv2+RJjbaxPl8DwcaxOHhyrkwvH6+TBsTp5cKzGnsPOpI8hAgAAACdAZl/gDAAAAPgQTtnb+qa7kxvGziuvvKKHHnpItbW12rlzp+655x45HA6de+65+va3vy2n06l///d/1+9+9zu53W4tW7ZMBQUFYz3tU0pfX5+WLVumt99+W4lEQosXL9bs2bM5Vhmqv79fy5cv144dO+RyufTAAw/Itm2OVwbbvXu3SktL9eSTT8rtdnOsMtQNN9yQumTqWWedpbKyMt1///1yuVyaN2+evva1r9EbY8k+RT3//PP20qVLbdu27b/85S/2HXfcMcYzgm3b9uOPP25fc8019k033WTbtm3ffvvt9tatW23btu0VK1bYv/71r+2Wlha7oqLCtizLfvvtt+3S0tKxnPIp6ZlnnrGrqqps27btPXv22FdccQXHKoP95je/se+55x7btm1769at9h133MHxymCJRML+13/9V/uqq66y33jjDY5Vhurt7bWvv/76I5677rrr7J07d9qWZdn//M//bLe0tNAbY+iUPV1hqDu5YewEg0F9//vfTz1+9dVX9fGPf1zSgbvnvfjii4pEIpo3b54cDoemTZum/v5+7dmzZ6ymfEr6zGc+o2984xupxy6Xi2OVwa688kqtXr1aktTe3q7TTjuN45XB1qxZo0WLFmny5MmS+HMwU7W2tqqnp0e33nqrbr75Zr388stKJBIKBoNyOByaN2+eXnrpJXpjDJ2ykTvYndwwtq6++urUzUakA7dnPHRbxEN3zzv62A11Vz2MDJ/PJ7/fr2g0qq9//eu68847OVYZzu12a+nSpVq9erWuvvpqjleGCofDmjhxYiqKJP4czFTZ2dm67bbbtGHDBn3nO9/Rvffeq5ycnNT4YMeK3hg9p2zkDnUnN2QOp/P9X6KH7p432J32MLreeecd3Xzzzbr++ut17bXXcqxOAmvWrNHzzz+vFStWKB6Pp57neGWOTZs26cUXX1RFRYX++te/aunSpUes0HKsMsfMmTN13XXXyeFwaObMmQoEAtq7d29qfLBjRW+MnlM2coe6kxsyx0c+8hH98Y9/lHTg7nmXXHKJioqK9MILL8iyLLW3t8uyLE2cOHGMZ3pqee+993Trrbfqm9/8pm688UZJHKtM9rOf/Uw/+MEPJEk5OTlyOBy68MILOV4Z6Omnn9aPfvQj1dbW6oILLtCaNWt0+eWXc6wy0DPPPKOamhpJ0q5du9TT06Pc3Fy9+eabsm1bL7zwQupY0Rtj45T9p8RAd3JD5lm6dKlWrFihtWvXatasWbr66qvlcrl0ySWXqKysTJZlaeXKlWM9zVPOf/zHf2j//v1at26d1q1bJ0m67777VFVVxbHKQFdddZXuvfdefelLX1IymdSyZct0zjnn8HvrJMGfg5npxhtv1L333qsvfvGLcjgcqq6ultPp1N13363+/n7NmzdPH/vYx3TRRRfRG2OEm0EAAADAOKfs6QoAAAAwF5ELAAAA4xC5AAAAMA6RCwAAAOMQuQAAADDOKXsJMQA43B//+Efdeeedmj17tiQpHo/r2muvVUVFhe655x69+uqrmjBhgpLJpPLy8nTvvfdq+vTpCofDevTRRzV9+vTUtm655RaVlJSkfc9HHnlEf/jDH7R06VJ94hOfSM2jrq5OjzzyyLDmPXfuXDU2Nn6IPQYAsxG5AHDQZZddlorLRCKhz3zmM7r++uslSd/85jd1+eWXS5L+/Oc/684779SmTZskSddcc43uvvvuY36/5557Tj/96U+PuOUnAODEIHIBYADRaFROp1Mul+sDY5dccomysrK0c+fOYW3rtdde0+rVq+VyueT1erV69WqFw2G9++67uv3227VhwwZlZ2d/4PuuvfZaffzjH9e2bdvkcDi0bt065ebmasWKFXrjjTc0ffp0JRIJSQdus3zodr2H3uOMM87QY489poaGBk2cOFE9PT36xje+oT/96U/6y1/+ou7ubt1///168cUX9eyzz8rhcOhzn/ucbr755kG3BwAnCyIXAA7aunWrKioq5HA4lJWVpRUrVsjn8w342kmTJqmzs1OS9Oyzz+qVV16RJOXl5enRRx894rXLly/X/fffrwsuuEANDQ2qqanRo48+qnA4rCeffFJer3fA94jFYvr85z+vFStW6K677tKWLVuUm5ureDyu+vp6tbe36/nnn5ckrVmzRhUVFbriiiv00ksv6aGHHtK//Mu/6A9/+IOeeeYZ9fX16dprr01te9asWVq+fLneeOMNPffcc/rxj38sh8OhW265RfPmzdOjjz76ge09/PDDx/1zDACjhcgFgIMOP10hnfb2dk2dOlXbt29Pe7rCP/7xD11wwQWSpEsvvfSYYvEjH/mIJOmMM85QPB7X22+/rYKCAknStGnTUqurr7/+un7wgx/oiSeekG3bysrKUltbmy666CK5XC65XC5deOGFqe3OnDkz9X3t7e265ZZbJEn79u3Tm2++OeD2AOBkQuQCwDFqbGxUdna2pk6dOqzXT548Wa2trTr//PP18ssv6+yzzx72ezkcjiMez5o1S7/4xS/0la98Rbt27dKuXbtSz996660qKipSW1ubXn75Zc2ePVu1tbWyLEvJZFKvvfZaajtOpzP1fbNnz9YTTzwhh8Ohp556Svn5+QNuDwBOJkQuAAzDd7/7Xf3nf/6nnE6nfD6fvve97w37e6uqqrR69WrZti2Xy6Xq6uoPPY8rr7xSkUhEN910k6ZNm6a8vDxJ0tKlS1VZWal4PK7e3l7dd999Ou+883TFFVdo4cKFysvLU1ZWltzuI//YP//88/XJT35SX/ziF5VIJFRQUKApU6YMuD0AOJk4bNu2x3oSAIATb/fu3frVr36lL33pS0okEvr85z+vH/7wh5o2bdpYTw0ARhwruQBgqLy8PLW0tOgLX/iCHA5HavUXAE4FrOQCAADAONzWFwAAAMYhcgEAAGAcIhcAAADGIXIBAABgHCIXAAAAxiFyAQAAYJz/DwEMuHphM5pxAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "sns.set_style('ticks')\n",
    "fig, ax = plt.subplots()\n",
    "fig.set_size_inches(11.7, 8.27)\n",
    "sns.distplot(indegree_dist, color='#16A085')\n",
    "plt.xlabel('PDF of Indegree')\n",
    "sns.despine()\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.2 No of people each person is following"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAF1CAYAAABYusasAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X10E3Wi//FP2rQFkpRSEKFAERSOILcuUNFrCz4v6AVZIxCoVl1dfxeuogV1WwsUlCddbdVTRBbUVYtKi3RdvejqlRUqDwLiKlLAVQTkWaBFmlD6kMzvD5ZohRoKJJ2S9+ucPUum32Q+M47l40xmvhbDMAwBAADAdCIaOwAAAABOjqIGAABgUhQ1AAAAk6KoAQAAmBRFDQAAwKQoagAAACZFUQMAADApihoAAIBJUdQAAABMiqIGAABgUtbGDnA2XH755erQoUNjxwAAAAho165dWr169SmNPSeKWocOHVRcXNzYMQAAAAJyOp2nPJZLnwAAACZFUQMAADApihoAAIBJBa2offnll0pPT5ckHTx4UGPGjNFtt92mkSNH6vvvv5ckFRUVyel0asSIEfr4448lSWVlZbr77ruVlpamjIwMVVZWBisiAACAqQXlZoJ58+bpnXfeUfPmzSVJTz31lIYMGaKbbrpJn376qb777js1b95cBQUFWrRokaqqqpSWlqaUlBTNnj1bgwcPltPp1Ny5c1VYWKi77rorGDEBAABMLShn1BITE5Wfn+9//fnnn2vfvn2666679O6776pfv35av369evfurejoaDkcDiUmJmrz5s1at26d+vfvL0kaMGCAVq5cGYyIAAAApheUojZw4EBZrT+drNu1a5diY2P1yiuvqH379po3b57cbrccDod/jM1mk9vtrrPcZrOpoqLipOsoLCyU0+mU0+lUeXl5MDYDAACgUYXkZoK4uDhde+21kqRrr71WGzZskN1ul8fj8Y/xeDxyOBx1lns8HsXGxp70M10ul4qLi1VcXKxWrVoFfyMAAABCLCRFrW/fvlq2bJkkae3atbrooouUlJSkdevWqaqqShUVFdqyZYu6d++uPn36+MeWlJSob9++oYgIAABgOiGZmSAzM1MTJ07UggULZLfblZubq5YtWyo9PV1paWkyDEPjxo1TTEyMxowZo8zMTBUVFalVq1bK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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "outdegree_dist = list(dict(g.out_degree()).values())\n",
    "outdegree_dist.sort()\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(outdegree_dist)\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of people each person is following')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2Iaspk2batCgQf6oBQAAoNawDVmtWrXS4sWL1alTJ+9qgp49exovDAAABBfvZqQBriNU2IaskpIS5eXlKS8vz/saIQsAgDDkPSA6sGWECp8hq7S0VFFRUXryySf9WQ8AAECt4DNkZWRkaO7cuerbt6+3TWhZlhwOhzZs2OC3AgEAQHA4v7qQqazK8Bmy5s6d6/3/6667zm8FAQCA4GTRLrwktsfqrFy5UsnJyZoxY4a2bt0qj8fjj7oAAECQsbxzWagM2wffZ86cKUn6+OOPNWfOHO3bt08ffvih8cIAAEBwYiKrcmxD1quvvqotW7YoPz9f3bp106OPPuqPugAAQJChXXhpbEPWpk2bdOrUKfXp00c9e/bU1VdfXakb33333YqLi5MkJSQkcBQPAAAhjmbhpbENWS+99JKKi4v14Ycf6qmnnlJeXp42b9580Z8pP+cwOzu7ZqoEAABBg9WFlWMbst555x29//772rlzp7p06aIHH3zQ9qZffPGFioqKNGzYMJWWlmrs2LG69tpra6RgAAAgvZKTp70nTvv1Pd3Fped+QcaqFNuQ9fHHH6t///566qmnKn3TevXqafjw4Ro0aJD27t2rBx98UG+//baios6/ncvlksvlkiQVFBRUoXQAAMLT2VKPst7cqeioCNWLst0ooEY1ja2rDlfE+vU9Q5VtyPrtb3+r2bNna9q0aWrbtq0mTpyohISEi/5Mu3bt1KZNGzkcDrVr107x8fE6duyYWrRo4b3G6XTK6XRKkpKTk6v5MQAACB+eH55AT+99lR7u1SHA1cAX2/g7ZcoU3XXXXVq6dKn69++vSZMm2d50xYoVevrppyVJR44ckdvt1uWXX179agEAAEKEbcgqLi7WbbfdpoYNG6p3794qKyuzvenAgQN16tQpDRkyRGPGjNGsWbMqtAoBAED18QB6cLNNPmVlZfryyy/1s5/9TF9++WWlbhodHe09lgcAANQsi70UQoJtyJo8ebIyMzN19OhRNWvWTDNmzPBHXQAAwAabggY325DVuXNnrVy50h+1AACASig/Q5CMFdx8hqyePXv6/CG7zUgBAIA5tAtDg8+QRZACACC40S4Mbj5D1tixY+Xw8U+Ph9oBAAic8oksVhcGN58hKyUlxZ91AACASrLoF4YEnyGrR48ekiS3260XXnhBubm5atu2rR5++GG/FQcA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7DHv15GRkfr888/Vo0cPSdIvf/lL/e///q+2bdumnj17yuFwqGXLliorK1N+fn61rw02zzzzjFJSUnTFFVdIUliPxebNm9WxY0eNGjVKI0eOVK9evcJ6PNq1a6eysjJ5PB653W5FRUWF3XgkJiZq/vz53q/9+fl9XRtIPx6PefPmqVOnTpKksrIy1a1bV9u3b9d1112n6OhoxcXFKTExUV988UWFv1PKP2NNXBsoPx6LgoIC/e53v1NmZqb3tXAZCxNqfchyu92KjY31fh0ZGanS0tIAVlQzYmJiFBsbK7fbrdGjRys9PV2WZcnhcHi/f+rUqQs+f/nr1b02mKxatUqNGzf2/gaWFLZjIZ37Q3LHjh16/vnn9eSTT2r8+PFhPR4NGjTQwYMHdccdd2jKlClKS0sLu/G4/fbbFRV1/oAPf35+X9cG0o/Ho/w/zv7v//5Pr732mu6//3653W7FxcV5r4mJiZHb7a7w+n9+xupeGyj/ORZlZWWaNGmSMjMzFRMT470mXMbChKA4Vsek2NhYFRYWer/2eDwVfnOFsm+//VajRo1Samqq+vXrpzlz5ni/V1hYqIYNG17w+QsLCxUXF6eIiIhqXRtMVq5cKYfDoS1btmjXrl3KyMio8F/K4TQWkhQfH6/27dsrOjpa7du3V926dXX48GHv98NtPF555RX17NlT48aN07fffquhQ4eqpKTE+/1wGw9J1f5MNXFtsHnrrbf04osvavHixWrcuLHPustfr1evnu1nvJRrg8Hnn3+uffv2KSsrS8XFxdq9e7eeeuop3XjjjWE3FjWl1s9kdevWTZs2bZIkffrpp+rYsWOAK6oZx48f17Bhw/T4449r4MCBkqTOnTtr69atkqRNmzape/fu6tatmzZv3iyPx6NDhw7J4/GocePG1b42mLz++ut67bXXlJ2drU6dOumZZ57RL3/5y7AcC0m6/vrr9cEHH8iyLB05ckRFRUW66aabwnY8GjZs6P2Du1GjRiotLQ3b3yvl/Pn5fV0bTP7+9797/wxp3bq1JKlr167atm2biouLderUKeXm5qpjx47q1q2b3n//fUnnPuP1119fI9cGg65du2rt2rXKzs7WvHnz1KFDB02aNCksx6Km1Pp9sjwej7KysvTVV1/JsizNmjVLV155ZaDLqraZM2dq3bp1at++vfe1SZMmaebMmSopKVH79u01c+ZMRUZGav78+dq0aZM8Ho8mTpyo7t27Ky8vT1OmTKnWtcEoLS1NWVlZioiIqPbnC+WxePbZZ7V161ZZlqUxY8YoISEhbMejsLBQmZmZOnbsmEpKSnTfffepS5cuYTceBw4c0NixY7Vs2bIa+UzVvTbQysdj6dKluummm9SiRQvvzOMNN9yg0aNHa9myZXK5XLIsSyNGjNDtt9+u48ePKyMjQ4WFhbrssss0d+5cNWjQoNrXBsNYLFu2zOdr4TIWNa3WhywAAIBAqPXtQgAAgEAgZAEAABhAyAIAADCAkAUAAGAAIQsAAMAAQhaAoHHgwAENHjy40tcPHjxYBw4cqPJ7XXPNNRWO2lq6dGmFI0YAoDoIWQDCVmxsrCZOnKizZ88GuhQAtVDtOF8GQK2Tlpamq6++Wl9//bXcbreef/55tWrVSs8995w++OADNW/eXAUFBZKkU6dOadKkSd6vJ0+erIYNG2ro0KF67bXXlJubq/nz52vJkiUVjtVq06aNunfvrueee04ZGRkV3n/NmjV69dVXFR0drbZt22r69OmqU6eO/wYAQMhjJgtA0OratateeeUVJSUlae3atfrqq6/00UcfacWKFXr22We9554tXLhQN954o7KzszVjxgxlZWWpRYsWevzxxzVhwgTNnj1b8+bN+8lzS9PT05WTk6OPP/7Y+1pBQYHmz5+vV199VUuXLlVcXJxcLpffPjeA2oGQBSBode7cWZLUvHlz74G1Xbp0UUREhGJjY73nnH311VdauXKl0tLSNGXKFJ08eVKS1Lt3bx0+fFg9evRQ8+bNf/I9oqOjNXv2bE2ePFlFRUWSpP3796tDhw6KjY2VdO6Yla+//tr0xwVQyxCyAISMdu3aafv27fJ4PDp9+rR2794tSWrfvr3uv/9+ZWdn6/e//7369esnSXr55ZeVlJSkHTt26NNPP/V532uuuUZ33nmn/vSnP0mSEhISlJubq9OnT0uS/vWvf6ldu3aGPx2A2oZnsgCEjE6dOqlv374aOHCgrrjiCjVp0kSSNHLkSE2aNEnLli2T2+3WI488os8++0z/8z//I5fLpf379+vRRx+Vy+VSXFzcT9575MiR2rhxoySpcePGevTRR3XfffcpIiJCiYmJGj9+vN8+J4DagQOiAQAADKBdCAAAYAAhCwAAwABCFgAAgAGELAAAAAMIWQAAAAYQsgAAAAwgZAEAABhAyAIAADDg/wOC/sIKPmPtJgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "indegree_dist = list(dict(g.in_degree()).values())\n",
    "indegree_dist.sort()\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(outdegree_dist[0:1500000])\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of people each person is following')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.boxplot(indegree_dist)\n",
    "plt.ylabel('No Of people each person is following')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "90 percentile value is 12.0\n",
      "91 percentile value is 13.0\n",
      "92 percentile value is 14.0\n",
      "93 percentile value is 15.0\n",
      "94 percentile value is 17.0\n",
      "95 percentile value is 19.0\n",
      "96 percentile value is 21.0\n",
      "97 percentile value is 24.0\n",
      "98 percentile value is 29.0\n",
      "99 percentile value is 40.0\n",
      "100 percentile value is 1566.0\n"
     ]
    }
   ],
   "source": [
    "### 90-100 percentile\n",
    "for i in range(0,11):\n",
    "    print(90+i,'percentile value is',np.percentile(outdegree_dist,90+i))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "99.1 percentile value is 42.0\n",
      "99.2 percentile value is 45.0\n",
      "99.3 percentile value is 48.0\n",
      "99.4 percentile value is 52.0\n",
      "99.5 percentile value is 56.0\n",
      "99.6 percentile value is 63.0\n",
      "99.7 percentile value is 73.0\n",
      "99.8 percentile value is 90.0\n",
      "99.9 percentile value is 123.0\n",
      "100.0 percentile value is 1566.0\n"
     ]
    }
   ],
   "source": [
    "### 99-100 percentile\n",
    "for i in range(10,110,10):\n",
    "    print(99+(i/100),'percentile value is',np.percentile(outdegree_dist,99+(i/100)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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kEMOGfV9FqPNfSPa32+1+I/Gfu0+e7Vn7NeesV97xn7tPnu1Z+zXntmX+1VXuaMCAAAFcOc2AACKIHy3U6vVcs0116SjoyNdXV3ZuHHj/j6lN4ShoaF86lOfSmdnZ973vvfln/7pn7Jx48acf/756ezszKc//enUai9/b78vfvGLed/73pe5c+dmzZo1+/nM958f/ehHmTlzZjZs2GCvxnDnnXemo6Mj7e3t+e///b/br10YGhrKJz7xicydOzednZ2+vnbh29/+drq6Xv5eonuyRzub+4ts+736zne+k87OznR1deXiiy/Os88+m+RnRtPtAAALRklEQVTlu7S2t7dnzpw5WbFiRZLkueeey4c+9KF0dnbm4x//eF588cX9toZ9afv9etXf//3f7/DX9fbrJ7bfrx/96Ee59NJL84EPfCBz587ND37wgyT7eL8qRnz1q1+t5s+fX1VVVX3rW9+qPvzhD+/nM3pjuO+++6rrr7++qqqqeu6556qZM2dWl1xySfXQQw9VVVVVV199dfU//+f/rNauXVt1dXVVtVqteuqpp6r29vb9edr7zeDgYPWf//N/rt75zndW3//+9+3VLjz00EPVJZdcUg0PD1d9fX3Vrbfear924X/9r/9VffSjH62qqqq+8Y1vVB/5yEfs1yjuuuuu6pxzzqne//73V1VV7dEejTb3F9lr9+oDH/hA9dhjj1VVVVV/+7d/Wy1cuLD64Q9/WJ1zzjnVwMBA9eMf/3jk4+uuu65atmxZVVVVdeedd1aLFy/eX8vYZ167X1VVVY899lh1wQUXjDxmv37itfs1f/786itf+UpVVVX1z//8z9WKFSv2+X654rudXd2lrmTvfve787GPfWzkuL6+PuvWrctb3/rWJC/fne/BBx9Mb29vTj/99NTV1eWoo47K8PBwnnvuuf112vvNTTfdlLlz5+awww5LEnu1C9/4xjcyderUXHbZZfnwhz+ct7/97fZrF4499tgMDw+nVqulr68vDQ0N9msUbW1t+dM//dOR4z3Zo9Hm/iJ77V7dcsstOeGEE5Ikw8PDaWpq2uEurS0tLTvcpfXV3zNL2Kvk9fu1ZcuW3HzzzbniiitGHrNfP/Ha/Xr00UfzzDPP5KKLLsrf//3f561vfes+3y/hu52d3aWudBMnTkxzc3P6+vry0Y9+NB//+MdTvXJv8VfHX7073/b79+rjJenp6cnkyZNHfrImsVe7sGXLlqxduzZf+MIX8pnPfCaf/OQn7dcuHHjggXnqqafyO7/zO7n66qvT1dVlv0bxrne9a+RGS8me/Rwcbe4vstfu1at/YH/00UfzV3/1V7nooov26C6tv+i236/h4eFceeWVueKKKzJx4sSROfbrJ1779fXUU0/loIMOyj333JMjjzwyf/Znf7bP90v4bmdXd6kr3dNPP50LLrgg73nPe3Luuedm3LiffOns6d35fpEtW7YsDz74YLq6uvKd73wn8+fP3+FKm73a0cEHH5zTTz89jY2NmTJlSpqamnb4xc1+7eiee+7J6aefnq9+9av58pe/nMsvvzxDQ0Mj4/ZrdHvy69Voc0tz//3359Of/nTuuuuuTJ48ecy7tL76WGl7tW7dumzcuDELFizIH/3RH+X73/9+brjhBvu1CwcffHDe8Y53JEne8Y53ZO3atft8v4TvdnZ1l7qSPfvss/nQhz6UT33qU3nf+96XJPn1X//1PPzww0levjvfKaeckhkzZuQb3/hGarVaNm3alFqtlsmTJ+/PU9/n/vqv/zp/9Vd/lSVLluSEE07ITTfdlDPPPNNe7cTJJ5+cBx54IFVV5ZlnnsmLL76YU0891X7txEEHHTQSsJMmTcq2bdv8XNwNe7JHo80tyZe//OWRX8OOPvroJHt2l9aSTJs2LV/5yleyZMmS3HLLLTn++ONz5ZVX2q9dOPnkk0f24Jvf/GaOP/74fb5fLmduZ7S71JH8t//23/LjH/84t99+e26//fYkyZVXXpnrr78+t9xyS6ZMmZJ3vetdqa+vzymnnJKOjo6R75BBMn/+/Fx99dX2ahSzZs3KN7/5zbzvfe9LVVW55ppr8iu/8iv2aycuuuiiXHHFFens7MzQ0FDmzZuXE0880X6NYU9+Do42txTDw8O54YYbcuSRR+a//Jf/kiT5zd/8zXz0ox/d7bu0khx66KH2ayfmz5+fq666Kvfee2+am5vzuc99LpMmTdqn++UGFgAAFMFbHQAAKILwBQCgCMIXAIAiCF8AAIogfAEAKIJvZwawnYcffjgf//jHc/zxxydJBgYGcu6556arqyuXX3551q1bl4MPPjjbtm1La2tr/ut//a85+uij09PTk1tvvXXke58mL3/7sdmzZ4/5mp///OfzwAMPZP78+fmt3/qtkcfXr1+fm2++OQMDAxkaGspv/dZv5bLLLktjY+NOn6u7uzvt7e0ZP378Do+fdtppWbVq1Z5uB8AvFOEL8Bpve9vb8vnPfz5JMjg4mHe/+915z3vekyT51Kc+lTPPPDNJ8sgjj+TjH/94li1bliQ555xz8slPfnKPX+/+++/P3/3d3+1wC91nn302f/RHf5Tbbrstxx57bKqqym233ZYbb7wxn/70p3f6XHfeeWfe+9737vE5AJRA+ALsQl9fX8aNG5f6+vrXjZ1yyikZP358Nm7cuFvP9dhjj+W6665LfX19mpqact1116Wnpyf/9m//lksuuSRf+tKXcsABByR5+Q5a5513Xo499tgkSV1dXS677LLMnj07L730Uv7gD/4gCxYsyHHHHZe//du/zbPPPpsjjjgimzdvzrx58/Knf/qnufrqq/P9738/Rx99dAYHB5O8fPvxq6++OgMDAyPncOSRR+a2227L8uXLM3ny5Lz44ov52Mc+lv/zf/5PvvWtb+WFF17IDTfckAcffDD/8A//kLq6uvzu7/5uLrjggp0+H8AbkfAFeI2HHnooXV1dqaury/jx43P11Vdn4sSJo879pV/6pWzZsiVJ8g//8A/59re/nSRpbW3NrbfeusPcq666KjfccENOOOGELF++PIsWLcqtt96anp6e/Pmf/3mamppG5j755JM57bTTdvj8urq6HHrooXn22WdHPZf3v//9ueOOO/L5z38+K1euzMDAQJYuXZpNmzblq1/9apLkpptuSldXV2bOnJl//ud/zs0335w/+IM/yAMPPJD77rsvQ0NDOffcc0eec8qUKbnqqqvy/e9/P/fff3/+5m/+JnV1dbnoooty+umn59Zbb33d85V4RyrgPwbhC/Aa27/VYSybNm3KEUcckccff3zMtzr88Ic/zAknnJDk5VvB7ioQDz/88Dz11FM7PDY8PJwf/vCHOeSQQ3Z4fLQbcP7Lv/xLpk2bliQ56qijRq7Cfu9738udd96Zu+++O1VVZfz48dmwYUPe8pa3pL6+PvX19TnxxBNHnufVK87f+973smnTplx00UVJkn//93/PD37wg1GfD+CNSvgC/JRWrVqVAw44IEccccRuzT/ssMOyfv36vPnNb843v/nNHHPMMTud+3u/93v5/d///bz97W/PMccck6qq8sUvfjFnnnlmDjjggDQ2Nmbz5s057rjj8thjj+Xwww9P8vJV4VqtlilTpuQrX/lKLrzwwjzzzDN55plnkrx8BfdDH/pQZsyYkQ0bNuSb3/xmjj/++CxZsiS1Wi3btm3LY489NnIe48aNG/m8448/PnfffXfq6upyzz33ZOrUqaM+H8AblfAF2AN//Md/nD/7sz/LuHHjMnHixPzJn/zJbn/u9ddfn+uuuy5VVaW+vj4LFy7c6dwjjjgin/3sZ/OZz3wmL730UoaGhvLWt741V155ZZLkggsuyLXXXpsjjzwyhx122MjnnXLKKfnDP/zD/OVf/mV6e3vz/ve/P0cddVRaW1uTJPPnz8+CBQsyMDCQl156KVdeeWV+7dd+LTNnzsycOXPS2tqa8ePHp6Fhx98e3vzmN+fUU0/N+eefn8HBwUybNi2HH374qM8H8EZVV432d2QAFONHP/pR/vEf/zEf+MAHMjg4mLPPPjt/8Rd/kaOOOmp/nxrAz5UrvgCFa21tzdq1a3Peeeelrq5u5CoxwC8aV3wBACiCWxYDAFAE4QsAQBGELwAARRC+AAAUQfgCAFAE4QsAQBH+f55EVAdNW9FyAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style('ticks')\n",
    "fig, ax = plt.subplots()\n",
    "fig.set_size_inches(11.7, 8.27)\n",
    "sns.distplot(outdegree_dist, color='#16A085')\n",
    "plt.xlabel('PDF of Outdegree')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No of persons those are not following anyone are 274512 and % is 14.741115442858524\n"
     ]
    }
   ],
   "source": [
    "print('No of persons those are not following anyone are' ,sum(np.array(outdegree_dist)==0),'and % is',\n",
    "                                sum(np.array(outdegree_dist)==0)*100/len(outdegree_dist) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No of persons having zero followers are 188043 and % is 10.097786512871734\n"
     ]
    }
   ],
   "source": [
    "print('No of persons having zero followers are' ,sum(np.array(indegree_dist)==0),'and % is',\n",
    "                                sum(np.array(indegree_dist)==0)*100/len(indegree_dist) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No of persons those are not not following anyone and also not having any followers are 0\n"
     ]
    }
   ],
   "source": [
    "count=0\n",
    "for i in g.nodes():\n",
    "    if len(list(g.predecessors(i)))==0 :\n",
    "        if len(list(g.successors(i)))==0:\n",
    "            count+=1\n",
    "print('No of persons those are not not following anyone and also not having any followers are',count)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.3 both followers + following "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "dict_in = dict(g.in_degree())\n",
    "dict_out = dict(g.out_degree())\n",
    "d = Counter(dict_in) + Counter(dict_out)\n",
    "in_out_degree = np.array(list(d.values()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Mx1yVPo6Ri11FjW32y2n01lrmcPhkMvlavRQAAAAZnO7DXVs1cLXMWqps6jdc889evjhh7V582aVlZVpy5YteuSRR3TvvfeamQ8AAMAU1W63ggKsdTdBnTcT3HrrrYqMjNTMmTO1a9cutWvXTmlpabr++uvNzAcAAGAKl8toOkVNkhISEpSQkGBWFgAAAJ+pcRsKCrRWUeOh7AAAAJJcbkOBFhtRo6gBAABIOl7lUlCAtarRL576PGnFihXaunWrOnfurAEDBjR2JgAAANOVV7tUXmWt2S281sbs7GwtXrxYQUFBevfdd/Xss8+akQsAAMBUgQE2hQY3sRG1DRs2aOHChZKkESNG8IB2AABw3jEMQy63oagWId5XNpHX2lhTUyO32y3pxE7YrPa0UgAAgLNU5TrRdUKDmtiI2m233abhw4fr8ssv18aNG3XbbbeZkQsAAMA0VTUnilqwxabn8FrU7r//fiUmJmr79u0aMmSIunfvbkYuAAAA01T+p6g5Kmp8nKS2Oovau+++e8qyb775Rt98843uvPPORg0FAABgppMjah2imvs4SW11FrVt27bVem0YhgoKCtSsWTOKGgAAOK+cLGpN5q7Pxx57zPPn4uJiTZgwQdddd50yMzNNCQYAAGAWR+WJU54hgYE+TlKb12vUFixYoHnz5unJJ588qweyV1dXKzMzU3v27FFVVZVGjx6trl27asKECbLZbOrWrZsmT56sgIAAzZo1S8uXL1dQUJAyMzMVFxd3xtsFAADwpsZtSJKq/3P3p1XUWdQOHDigJ598Ui1bttSiRYvUsmXLs9rQe++9p6ioKL3wwgsqLS3VXXfdpUsvvVTp6em6+uqrlZWVpWXLlqlDhw5av369Fi1apH379mns2LFasmTJWW0bAADglxyvOjGidmFkMx8nqa3OojZo0CAFBwerX79+evrpp2u9l52d3eAN3XLLLRo4cKDndWBgoDZv3qy+fftKkpKSkrR69WrFxsYqMTFRNptNHTp0kMvlUklJiaKjoxu8TQAAgPo4WFYpqQlNz/Hyyy+f0w2FhYVJkhwOhx555BGlp6frueee80ygGxYWprKyMjkcDkVFRdX6ubKyMooaAABodFEtgn0doZY6i9rJka5zad++fRozZoxSU1M1ePBgvfDCC573nE6nIiMjFR4eLqfTWWt5RETEKZ+Vl5en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9u31xBNPaMKECZoxY4ZycnJO+5zf9PR0rV69Wp999plnWWlpqWbOnKl58+bp7bffVkREhPLy8kzbbwDnD4oagPNWz549JUnt2rVTZWWlfvjhB/Xq1UsBAQEKDw/3PCfy+++/15IlS5SWlqZJkybp2LFjkqQBAwZo//796tu3r9q1a3fabYSEhGjGjBmaOHGiysvLJUm7du1S165dFR4eLunEY5W2bt3a2LsL4DxEUQPgN2JjY7Vx40a53W4dP35cP/zwgySpS5cuGjlypHJzc/WnP/1JgwcPliS9/vrrSkhI0KZNm/Tll1/W+bmXXXaZBg0apFdffVWS1LFjR23btk3Hjx+XJK1fv16xsbGNvHcAzkdcowbAb/To0UO33HKLhgwZorZt26p169aSpFGjRumpp55Sfn6+HA6HHn74YX399df6xz/+oby8PO3atUtjx45VXl6eIiIiTvvZo0aN0ieffCJJio6O1tixY3XfffcpICBAMTExevzxx03bTwDnDx7KDgAAYFGc+gQAALAoihoAAIBFUdQAAAAsiqIGAABgURQ1AAAAi6KoAQAAWBRFDQAAwKIoagAAABb1/wHwq0JSL3TfiAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "in_out_degree_sort = sorted(in_out_degree)\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(in_out_degree_sort)\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of people each person is following + followers')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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tm3TZZddpqioKDVq1EgdOnTQ7t27K/w/pfzzeeNaf/rleBQUFOhvf/ubUlNTPa+F0nh4W0iGL6fTqdjYWM/XERERKi0t9WNF3hETE6PY2Fg5nU6NGTNGY8eOlTFGYWFhnu8fP378rM9f/nptrw00K1euVPPmzT3/YksK6fEoKCjQ9u3b9dxzz+kvf/mLHnnkkZAdj4YNGyovL0833nijpk6dqpSUlJAci4EDByoy8vRBJ3aOQWXX+ssvx6L8D2xffPGFFi9erDvvvFNOp1ONGjXyXBMTEyOn01nh9TM/X22v9aczx8Plcmny5MlKTU1VTEyM55pQGg9vC9jjhXwpNjZWhYWFnq/dbneFf+mC2YEDBzR69GglJydr8ODBeuaZZzzfKywsVOPGjc/6/IWFhWrUqJHCw8NrdW2gWbFihcLCwrRp0ybt2rVLEydOrPAn61Abj6ZNm6pTp06KiopSp06dFB0drYMHD3q+H0rj8frrr6tPnz6aMGGCDhw4oJEjR6qkpMTz/VAaizPV9nN549pA8vbbb+ull17SggUL1Lx580prLn+9fv36lp+vOtcGih07dignJ0fTp09XcXGxvv32W82aNUtXX311SI6HN4TkzNfll1+u9evXS5K++uordevWzc8VeceRI0d0991369FHH9XQoUMlST179tTmzZslSevXr9eVV16pyy+/XBs2bJDb7db+/fvldrvVvHnzWl8baJYsWaLFixcrIyNDPXr00FNPPaW+ffuG7HhcccUV+vjjj2WM0Q8//KCioiJdc801ITkejRs39vzHvEmTJiotLQ3pf1fK2TkGlV0bKN58803Pfz/at28vSerVq5e2bNmi4uJiHT9+XFlZWerWrZsuv/xyffTRR5LKPt8VV1zhlWsDRa9evbRmzRplZGRo7ty56tKliyZPnhyy4+ENIdnny+12a/r06frmm29kjNHs2bPVuXNnf5dVazNnztTatWvVqVMnz2uTJ0/WzJkzVVJSok6dOmnmzJmKiIhQenq61q9fL7fbrccff1xXXnmlsrOzNXXq1FpdG6hSUlI0ffp0hYeH1/ozBvN4PP3009q8ebOMMRo3bpzatWsXkuNRWFio1NRUHT58WCUlJRoxYoQuueSSkByL3NxcjR8/XpmZmV75XLW9NhDGYunSpbrmmmvUpk0bz0zlVVddpTFjxigzM1MOh0PGGN1///0aOHCgjhw5ookTJ6qwsFDNmjVTWlqaGjZsWOtr/e3M3xuVvRZK4+FNIRm+AAAA/CUklx0BAAD8hfAFAABgI8IXAACAjQhfAAAANiJ8AQAA2IjwBSCg5ebm6rbbbqvy9bfddptyc3NrfK+LL764wpFjS5curXDMCgDUFuELAM4QGxurxx9/XKdOnfJ3KQDqqLpxpg6AkJCSkqLu3btrz549cjqdeu6559S2bVvNmzdPH3/8sVq3bq2CggJJ0vHjxzV58mTP11OmTFHjxo01cuRILV68WFlZWUpPT9eiRYsqHC/WsWNHXXnllZo3b54mTpxY4f6rV6/WwoULFRUVpQsvvFBPPvmk6tWrZ98AAKgTmPkCEFR69eql119/XfHx8VqzZo2++eYbffbZZ1q+fLmefvppz5lw8+fP19VXX62MjAzNmDFD06dPV5s2bfToo49q0qRJmjNnjubOnXvOc13Hjh2rjRs36vPPP/e8VlBQoPT0dC1cuFBLly5Vo0aN5HA4bPvcAOoOwheAoNKzZ09JUuvWrT2H/F5yySUKDw9XbGys5wy4b775RitWrFBKSoqmTp2qY8eOSZL69++vgwcPqnfv3mrduvU57xEVFaU5c+ZoypQpKioqkiTt27dPXbp0UWxsrKSy42b27Nnj648LoA4ifAEIanFxcdq2bZvcbrdOnDihb7/9VpLUqVMn3XnnncrIyNCzzz6rwYMHS5Jee+01xcfHa/v27frqq68qfd+LL75YN998s1555RVJUrt27ZSVlaUTJ05Ikj799FPFxcX5+NMBqIvY8wUgqPXo0UODBg3S0KFD1apVK7Vo0UKSNGrUKE2ePFmZmZlyOp168MEH9fXXX+t///d/5XA4tG/fPj300ENyOBxq1KjROd971KhR+vDDDyVJzZs310MPPaQRI0YoPDxcHTp00COPPGLb5wRQd3CwNgAAgI1YdgQAALAR4QsAAMBGhC8AAAAbEb4AAABsRPgCAACwEeELAADARoQvAAAAGxG+AAAAbPT/pymA9gVjohIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "in_out_degree_sort = sorted(in_out_degree)\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(in_out_degree_sort[0:1500000])\n",
    "plt.xlabel('Index No')\n",
    "plt.ylabel('No Of people each person is following + followers')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "90 percentile value is 24.0\n",
      "91 percentile value is 26.0\n",
      "92 percentile value is 28.0\n",
      "93 percentile value is 31.0\n",
      "94 percentile value is 33.0\n",
      "95 percentile value is 37.0\n",
      "96 percentile value is 41.0\n",
      "97 percentile value is 48.0\n",
      "98 percentile value is 58.0\n",
      "99 percentile value is 79.0\n",
      "100 percentile value is 1579.0\n"
     ]
    }
   ],
   "source": [
    "### 90-100 percentile\n",
    "for i in range(0,11):\n",
    "    print(90+i,'percentile value is',np.percentile(in_out_degree_sort,90+i))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "99.1 percentile value is 83.0\n",
      "99.2 percentile value is 87.0\n",
      "99.3 percentile value is 93.0\n",
      "99.4 percentile value is 99.0\n",
      "99.5 percentile value is 108.0\n",
      "99.6 percentile value is 120.0\n",
      "99.7 percentile value is 138.0\n",
      "99.8 percentile value is 168.0\n",
      "99.9 percentile value is 221.0\n",
      "100.0 percentile value is 1579.0\n"
     ]
    }
   ],
   "source": [
    "### 99-100 percentile\n",
    "for i in range(10,110,10):\n",
    "    print(99+(i/100),'percentile value is',np.percentile(in_out_degree_sort,99+(i/100)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min of no of followers + following is 1\n",
      "334291  persons having minimum no of followers + following\n"
     ]
    }
   ],
   "source": [
    "print('Min of no of followers + following is',in_out_degree.min())\n",
    "print(np.sum(in_out_degree==in_out_degree.min()),' persons having minimum no of followers + following')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max of no of followers + following is 1579\n",
      "1  persons having maximum no of followers + following\n"
     ]
    }
   ],
   "source": [
    "print('Max of no of followers + following is',in_out_degree.max())\n",
    "print(np.sum(in_out_degree==in_out_degree.max()),' persons having maximum no of followers + following')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No of persons having followers + following less than 10 are 1320326\n"
     ]
    }
   ],
   "source": [
    "print('No of persons having followers + following less than 10 are',np.sum(in_out_degree<10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No of weakly connected components 45558\n",
      "weakly connected components wit 2 nodes 32195\n"
     ]
    }
   ],
   "source": [
    "print('No of weakly connected components',len(list(nx.weakly_connected_components(g))))\n",
    "count=0\n",
    "for i in list(nx.weakly_connected_components(g)):\n",
    "    if len(i)==2:\n",
    "        count+=1\n",
    "print('weakly connected components wit 2 nodes',count)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Posing a problem as classification problem "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1 Generating some edges which are not present in graph for supervised learning  \n",
    "Generated Bad links from graph which are not in graph and whose shortest path is greater than 2. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 2.17 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "###generating bad edges from given graph\n",
    "import random\n",
    "if not os.path.isfile('missing_edges_final.p'):\n",
    "    #getting all set of edges\n",
    "    r = csv.reader(open('train_woheader.csv','r'))\n",
    "    edges = dict()\n",
    "    for edge in r:\n",
    "        edges[(edge[0], edge[1])] = 1\n",
    "        \n",
    "        \n",
    "    missing_edges = set([])\n",
    "    while (len(missing_edges)<9437519):\n",
    "        a=random.randint(1, 1862220)\n",
    "        b=random.randint(1, 1862220)\n",
    "        tmp = edges.get((a,b),-1)\n",
    "        if tmp == -1 and a!=b:\n",
    "            try:\n",
    "                if nx.shortest_path_length(g,source=a,target=b) > 2: \n",
    "\n",
    "                    missing_edges.add((a,b))\n",
    "                else:\n",
    "                    continue  \n",
    "            except:  \n",
    "                    missing_edges.add((a,b))              \n",
    "        else:\n",
    "            continue\n",
    "    pickle.dump(missing_edges,open('missing_edges_final.p','wb'))\n",
    "else:\n",
    "    missing_edges = pickle.load(open('missing_edges_final.p','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9437519"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "missing_edges = pickle.load(open('missing_edges_final.p','rb'))\n",
    "len(missing_edges)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 Training and Test data split:  \n",
    "Removed edges from Graph and used as test data and after removing used that graph for creating features for Train and test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of nodes in the graph with edges 9437519\n",
      "Number of nodes in the graph without edges 9437519\n",
      "============================================================\n",
      "Number of nodes in the train data graph with edges 7550015 = 7550015\n",
      "Number of nodes in the train data graph without edges 7550015 = 7550015\n",
      "============================================================\n",
      "Number of nodes in the test data graph with edges 1887504 = 1887504\n",
      "Number of nodes in the test data graph without edges 1887504 = 1887504\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "if (not os.path.isfile('train_pos_after_eda.csv')) and (not os.path.isfile('test_pos_after_eda.csv')):\n",
    "    #reading total data df\n",
    "    df_pos = pd.read_csv('train.csv')\n",
    "    df_neg = pd.DataFrame(list(missing_edges), columns=['source_node', 'destination_node'])\n",
    "    \n",
    "    print(\"Number of nodes in the graph with edges\", df_pos.shape[0])\n",
    "    print(\"Number of nodes in the graph without edges\", df_neg.shape[0])\n",
    "    \n",
    "    #Trian test split \n",
    "    #Spiltted data into 80-20 \n",
    "    #positive links and negative links seperatly because we need positive training data only for creating graph \n",
    "    #and for feature generation\n",
    "    X_train_pos, X_test_pos, y_train_pos, y_test_pos  = train_test_split(df_pos,np.ones(len(df_pos)),test_size=0.2, random_state=9)\n",
    "    X_train_neg, X_test_neg, y_train_neg, y_test_neg  = train_test_split(df_neg,np.zeros(len(df_neg)),test_size=0.2, random_state=9)\n",
    "    \n",
    "    print('='*60)\n",
    "    print(\"Number of nodes in the train data graph with edges\", X_train_pos.shape[0],\"=\",y_train_pos.shape[0])\n",
    "    print(\"Number of nodes in the train data graph without edges\", X_train_neg.shape[0],\"=\", y_train_neg.shape[0])\n",
    "    print('='*60)\n",
    "    print(\"Number of nodes in the test data graph with edges\", X_test_pos.shape[0],\"=\",y_test_pos.shape[0])\n",
    "    print(\"Number of nodes in the test data graph without edges\", X_test_neg.shape[0],\"=\",y_test_neg.shape[0])\n",
    "\n",
    "    #removing header and saving\n",
    "    X_train_pos.to_csv('train_pos_after_eda.csv',header=False, index=False)\n",
    "    X_test_pos.to_csv('test_pos_after_eda.csv',header=False, index=False)\n",
    "    X_train_neg.to_csv('train_neg_after_eda.csv',header=False, index=False)\n",
    "    X_test_neg.to_csv('test_neg_after_eda.csv',header=False, index=False)\n",
    "else:\n",
    "    #Graph from Traing data only \n",
    "    print('deleting ........')\n",
    "    del missing_edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Name: \n",
      "Type: DiGraph\n",
      "Number of nodes: 1780722\n",
      "Number of edges: 7550015\n",
      "Average in degree:   4.2399\n",
      "Average out degree:   4.2399\n",
      "Name: \n",
      "Type: DiGraph\n",
      "Number of nodes: 1144623\n",
      "Number of edges: 1887504\n",
      "Average in degree:   1.6490\n",
      "Average out degree:   1.6490\n",
      "no of people common in train and test --  1063125\n",
      "no of people present in train but not present in test --  717597\n",
      "no of people present in test but not present in train --  81498\n",
      " % of people not there in Train but exist in Test in total Test data are 7.1200735962845405 %\n"
     ]
    }
   ],
   "source": [
    "if (os.path.isfile('train_pos_after_eda.csv')) and (os.path.isfile('test_pos_after_eda.csv')):        \n",
    "    train_graph=nx.read_edgelist('train_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n",
    "    test_graph=nx.read_edgelist('test_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n",
    "    print(nx.info(train_graph))\n",
    "    print(nx.info(test_graph))\n",
    "\n",
    "    # finding the unique nodes in the both train and test graphs\n",
    "    train_nodes_pos = set(train_graph.nodes())\n",
    "    test_nodes_pos = set(test_graph.nodes())\n",
    "\n",
    "    trY_teY = len(train_nodes_pos.intersection(test_nodes_pos))\n",
    "    trY_teN = len(train_nodes_pos - test_nodes_pos)\n",
    "    teY_trN = len(test_nodes_pos - train_nodes_pos)\n",
    "\n",
    "    print('no of people common in train and test -- ',trY_teY)\n",
    "    print('no of people present in train but not present in test -- ',trY_teN)\n",
    "\n",
    "    print('no of people present in test but not present in train -- ',teY_trN)\n",
    "    print(' % of people not there in Train but exist in Test in total Test data are {} %'.format(teY_trN/len(test_nodes_pos)*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============================================================\n",
      "Number of nodes in the train data graph with edges 7550015\n",
      "Number of nodes in the train data graph without edges 7550015\n",
      "============================================================\n",
      "Number of nodes in the test data graph with edges 1887504\n",
      "Number of nodes in the test data graph without edges 1887504\n"
     ]
    }
   ],
   "source": [
    "#final train and test data sets\n",
    "if (not os.path.isfile('train_after_eda.csv')) and \\\n",
    "(not os.path.isfile('test_after_eda.csv')) and \\\n",
    "(not os.path.isfile('train_y.csv')) and \\\n",
    "(not os.path.isfile('test_y.csv')) and \\\n",
    "(os.path.isfile('train_pos_after_eda.csv')) and \\\n",
    "(os.path.isfile('test_pos_after_eda.csv')) and \\\n",
    "(os.path.isfile('train_neg_after_eda.csv')) and \\\n",
    "(os.path.isfile('test_neg_after_eda.csv')):\n",
    "    \n",
    "    X_train_pos = pd.read_csv('train_pos_after_eda.csv', names=['source_node', 'destination_node'])\n",
    "    X_test_pos = pd.read_csv('test_pos_after_eda.csv', names=['source_node', 'destination_node'])\n",
    "    X_train_neg = pd.read_csv('train_neg_after_eda.csv', names=['source_node', 'destination_node'])\n",
    "    X_test_neg = pd.read_csv('test_neg_after_eda.csv', names=['source_node', 'destination_node'])\n",
    "\n",
    "    print('='*60)\n",
    "    print(\"Number of nodes in the train data graph with edges\", X_train_pos.shape[0])\n",
    "    print(\"Number of nodes in the train data graph without edges\", X_train_neg.shape[0])\n",
    "    print('='*60)\n",
    "    print(\"Number of nodes in the test data graph with edges\", X_test_pos.shape[0])\n",
    "    print(\"Number of nodes in the test data graph without edges\", X_test_neg.shape[0])\n",
    "\n",
    "    X_train = X_train_pos.append(X_train_neg,ignore_index=True)\n",
    "    y_train = np.concatenate((y_train_pos,y_train_neg))\n",
    "    X_test = X_test_pos.append(X_test_neg,ignore_index=True)\n",
    "    y_test = np.concatenate((y_test_pos,y_test_neg)) \n",
    "    \n",
    "    X_train.to_csv('train_after_eda.csv',header=False,index=False)\n",
    "    X_test.to_csv('test_after_eda.csv',header=False,index=False)\n",
    "    pd.DataFrame(y_train.astype(int)).to_csv('train_y.csv',header=False,index=False)\n",
    "    pd.DataFrame(y_test.astype(int)).to_csv('test_y.csv',header=False,index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data points in train data (15100030, 2)\n",
      "Data points in test data (3775008, 2)\n",
      "Shape of traget variable in train (15100030,)\n",
      "Shape of traget variable in test (3775008,)\n"
     ]
    }
   ],
   "source": [
    "print(\"Data points in train data\",X_train.shape)\n",
    "print(\"Data points in test data\",X_test.shape)\n",
    "print(\"Shape of traget variable in train\",y_train.shape)\n",
    "print(\"Shape of traget variable in test\", y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Importing Libraries\n",
    "# please do go through this python notebook: \n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "import csv\n",
    "import pandas as pd#pandas to create small dataframes \n",
    "import datetime #Convert to unix time\n",
    "import time #Convert to unix time\n",
    "# if numpy is not installed already : pip3 install numpy\n",
    "import numpy as np#Do aritmetic operations on arrays\n",
    "# matplotlib: used to plot graphs\n",
    "import matplotlib\n",
    "import matplotlib.pylab as plt\n",
    "import seaborn as sns#Plots\n",
    "from matplotlib import rcParams#Size of plots  \n",
    "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n",
    "import math\n",
    "import pickle\n",
    "import os\n",
    "# to install xgboost: pip3 install xgboost\n",
    "import xgboost as xgb\n",
    "\n",
    "import warnings\n",
    "import networkx as nx\n",
    "import pdb\n",
    "import pickle\n",
    "from pandas import HDFStore,DataFrame\n",
    "from pandas import read_hdf\n",
    "from scipy.sparse.linalg import svds, eigs\n",
    "import gc\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Reading Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Name: \n",
      "Type: DiGraph\n",
      "Number of nodes: 1780722\n",
      "Number of edges: 7550015\n",
      "Average in degree:   4.2399\n",
      "Average out degree:   4.2399\n"
     ]
    }
   ],
   "source": [
    "train_graph=nx.read_edgelist('train_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n",
    "print(nx.info(train_graph))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " # 2. Similarity measures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1 Jaccard Distance:\n",
    "http://www.statisticshowto.com/jaccard-index/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{equation}\n",
    "j = \\frac{|X\\cap Y|}{|X \\cup Y|} \n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for followees\n",
    "def jaccard_for_followees(a,b):\n",
    "    try:\n",
    "        if len(set(train_graph.successors(a))) == 0  | len(set(train_graph.successors(b))) == 0:\n",
    "            return 0\n",
    "        sim = (len(set(train_graph.successors(a)).intersection(set(train_graph.successors(b)))))/\\\n",
    "                                    (len(set(train_graph.successors(a)).union(set(train_graph.successors(b)))))\n",
    "    except:\n",
    "        return 0\n",
    "    return sim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n"
     ]
    }
   ],
   "source": [
    "#one test case\n",
    "print(jaccard_for_followees(273084,1505602))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n"
     ]
    }
   ],
   "source": [
    "#node 1635354 not in graph \n",
    "print(jaccard_for_followees(273084,1505602))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for followers\n",
    "def jaccard_for_followers(a,b):\n",
    "    try:\n",
    "        if len(set(train_graph.predecessors(a))) == 0  | len(set(g.predecessors(b))) == 0:\n",
    "            return 0\n",
    "        sim = (len(set(train_graph.predecessors(a)).intersection(set(train_graph.predecessors(b)))))/\\\n",
    "                                 (len(set(train_graph.predecessors(a)).union(set(train_graph.predecessors(b)))))\n",
    "        return sim\n",
    "    except:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "print(jaccard_for_followers(273084,470294))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "#node 1635354 not in graph \n",
    "print(jaccard_for_followees(669354,1635354))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 Cosine distance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{equation}\n",
    "CosineDistance = \\frac{|X\\cap Y|}{|X|\\cdot|Y|} \n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for followees\n",
    "def cosine_for_followees(a,b):\n",
    "    try:\n",
    "        if len(set(train_graph.successors(a))) == 0  | len(set(train_graph.successors(b))) == 0:\n",
    "            return 0\n",
    "        sim = (len(set(train_graph.successors(a)).intersection(set(train_graph.successors(b)))))/\\\n",
    "                                    (math.sqrt(len(set(train_graph.successors(a)))*len((set(train_graph.successors(b))))))\n",
    "        return sim\n",
    "    except:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n"
     ]
    }
   ],
   "source": [
    "print(cosine_for_followees(273084,1505602))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "print(cosine_for_followees(273084,1635354))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cosine_for_followers(a,b):\n",
    "    try:\n",
    "        \n",
    "        if len(set(train_graph.predecessors(a))) == 0  | len(set(train_graph.predecessors(b))) == 0:\n",
    "            return 0\n",
    "        sim = (len(set(train_graph.predecessors(a)).intersection(set(train_graph.predecessors(b)))))/\\\n",
    "                                     (math.sqrt(len(set(train_graph.predecessors(a))))*(len(set(train_graph.predecessors(b)))))\n",
    "        return sim\n",
    "    except:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.02886751345948129\n"
     ]
    }
   ],
   "source": [
    "print(cosine_for_followers(2,470294))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "print(cosine_for_followers(669354,1635354))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Ranking Measures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.algorithms.link_analysis.pagerank_alg.pagerank.html\n",
    "\n",
    "PageRank computes a ranking of the nodes in the graph G based on the structure of the incoming links.\n",
    "\n",
    "<img src='PageRanks-Example.jpg'/>\n",
    "\n",
    "Mathematical PageRanks for a simple network, expressed as percentages. (Google uses a logarithmic scale.) Page C has a higher PageRank than Page E, even though there are fewer links to C; the one link to C comes from an important page and hence is of high value. If web surfers who start on a random page have an 85% likelihood of choosing a random link from the page they are currently visiting, and a 15% likelihood of jumping to a page chosen at random from the entire web, they will reach Page E 8.1% of the time. <b>(The 15% likelihood of jumping to an arbitrary page corresponds to a damping factor of 85%.) Without damping, all web surfers would eventually end up on Pages A, B, or C, and all other pages would have PageRank zero. In the presence of damping, Page A effectively links to all pages in the web, even though it has no outgoing links of its own.</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1 Page Ranking\n",
    "\n",
    "https://en.wikipedia.org/wiki/PageRank\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('page_rank.p'):\n",
    "    pr = nx.pagerank(train_graph, alpha=0.85)\n",
    "    pickle.dump(pr,open('page_rank.p','wb'))\n",
    "else:\n",
    "    pr = pickle.load(open('page_rank.p','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "min 1.6556497245737814e-07\n",
      "max 2.7098251341935827e-05\n",
      "mean 5.615699699389075e-07\n"
     ]
    }
   ],
   "source": [
    "print('min',pr[min(pr, key=pr.get)])\n",
    "print('max',pr[max(pr, key=pr.get)])\n",
    "print('mean',float(sum(pr.values())) / len(pr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.615699699389075e-07\n"
     ]
    }
   ],
   "source": [
    "#for imputing to nodes which are not there in Train data\n",
    "mean_pr = float(sum(pr.values())) / len(pr)\n",
    "print(mean_pr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. Other Graph Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.1 Shortest path:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Getting Shortest path between twoo nodes, if nodes have direct path i.e directly connected then we are removing that edge and calculating path. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#if has direct edge then deleting that edge and calculating shortest path\n",
    "def compute_shortest_path_length(a,b):\n",
    "    p=-1\n",
    "    try:\n",
    "        if train_graph.has_edge(a,b):\n",
    "            train_graph.remove_edge(a,b)\n",
    "            p= nx.shortest_path_length(train_graph,source=a,target=b)\n",
    "            train_graph.add_edge(a,b)\n",
    "        else:\n",
    "            p= nx.shortest_path_length(train_graph,source=a,target=b)\n",
    "        return p\n",
    "    except:\n",
    "        return -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#testing\n",
    "compute_shortest_path_length(77697, 826021)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#testing\n",
    "compute_shortest_path_length(669354,1635354)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.2 Checking for same community"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#getting weekly connected edges from graph \n",
    "wcc=list(nx.weakly_connected_components(train_graph))\n",
    "def belongs_to_same_wcc(a,b):\n",
    "    index = []\n",
    "    if train_graph.has_edge(b,a):\n",
    "        return 1\n",
    "    if train_graph.has_edge(a,b):\n",
    "            for i in wcc:\n",
    "                if a in i:\n",
    "                    index= i\n",
    "                    break\n",
    "            if (b in index):\n",
    "                train_graph.remove_edge(a,b)\n",
    "                if compute_shortest_path_length(a,b)==-1:\n",
    "                    train_graph.add_edge(a,b)\n",
    "                    return 0\n",
    "                else:\n",
    "                    train_graph.add_edge(a,b)\n",
    "                    return 1\n",
    "            else:\n",
    "                return 0\n",
    "    else:\n",
    "            for i in wcc:\n",
    "                if a in i:\n",
    "                    index= i\n",
    "                    break\n",
    "            if(b in index):\n",
    "                return 1\n",
    "            else:\n",
    "                return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "belongs_to_same_wcc(861, 1659750)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "belongs_to_same_wcc(669354,1635354)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.3 Adamic/Adar Index:\n",
    "Adamic/Adar measures is defined as inverted sum of degrees of common neighbours for given two vertices.\n",
    "$$A(x,y)=\\sum_{u \\in N(x) \\cap N(y)}\\frac{1}{log(|N(u)|)}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "#adar index\n",
    "def calc_adar_in(a,b):\n",
    "    sum=0\n",
    "    try:\n",
    "        n=list(set(train_graph.successors(a)).intersection(set(train_graph.successors(b))))\n",
    "        if len(n)!=0:\n",
    "            for i in n:\n",
    "                sum=sum+(1/np.log10(len(list(train_graph.predecessors(i)))))\n",
    "            return sum\n",
    "        else:\n",
    "            return 0\n",
    "    except:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_adar_in(1,189226)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_adar_in(669354,1635354)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.4 Is persion was following back:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def follows_back(a,b):\n",
    "    if train_graph.has_edge(b,a):\n",
    "        return 1\n",
    "    else:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "follows_back(1,189226)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "follows_back(669354,1635354)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.5 Katz Centrality:\n",
    "https://en.wikipedia.org/wiki/Katz_centrality\n",
    "\n",
    "https://www.geeksforgeeks.org/katz-centrality-centrality-measure/\n",
    " Katz centrality computes the centrality for a node \n",
    "    based on the centrality of its neighbors. It is a \n",
    "    generalization of the eigenvector centrality. The\n",
    "    Katz centrality for node `i` is\n",
    " \n",
    "$$x_i = \\alpha \\sum_{j} A_{ij} x_j + \\beta,$$\n",
    "where `A` is the adjacency matrix of the graph G \n",
    "with eigenvalues $$\\lambda$$.\n",
    "\n",
    "The parameter $$\\beta$$ controls the initial centrality and \n",
    "\n",
    "$$\\alpha < \\frac{1}{\\lambda_{max}}.$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('katz.p'):\n",
    "    katz = nx.katz.katz_centrality(train_graph,alpha=0.005,beta=1)\n",
    "    pickle.dump(katz,open('katz.p','wb'))\n",
    "else:\n",
    "    katz = pickle.load(open('katz.p','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "min 0.0007313532484065916\n",
      "max 0.003394554981699122\n",
      "mean 0.0007483800935562018\n"
     ]
    }
   ],
   "source": [
    "print('min',katz[min(katz, key=katz.get)])\n",
    "print('max',katz[max(katz, key=katz.get)])\n",
    "print('mean',float(sum(katz.values())) / len(katz))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0007483800935562018\n"
     ]
    }
   ],
   "source": [
    "mean_katz = float(sum(katz.values())) / len(katz)\n",
    "print(mean_katz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.6 Hits Score\n",
    "The HITS algorithm computes two numbers for a node. Authorities estimates the node value based on the incoming links. Hubs estimates the node value based on outgoing links.\n",
    "\n",
    "https://en.wikipedia.org/wiki/HITS_algorithm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('hits.p'):\n",
    "    hits = nx.hits(train_graph, max_iter=100, tol=1e-08, nstart=None, normalized=True)\n",
    "    pickle.dump(hits,open('hits.p','wb'))\n",
    "else:\n",
    "    hits = pickle.load(open('hits.p','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "min 0.0\n",
      "max 0.004868653378780953\n",
      "mean 5.615699699344123e-07\n"
     ]
    }
   ],
   "source": [
    " print('min',hits[0][min(hits[0], key=hits[0].get)])\n",
    "print('max',hits[0][max(hits[0], key=hits[0].get)])\n",
    "print('mean',float(sum(hits[0].values())) / len(hits[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5. Featurization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "if os.path.isfile('train_after_eda.csv'):\n",
    "    filename = \"train_after_eda.csv\"\n",
    "    # you uncomment this line, if you dont know the lentgh of the file name\n",
    "    # here we have hardcoded the number of lines as 15100030\n",
    "    # n_train = sum(1 for line in open(filename)) #number of records in file (excludes header)\n",
    "    n_train =  15100028\n",
    "    s = 100000 #desired sample size\n",
    "    skip_train = sorted(random.sample(range(1,n_train+1),n_train-s))\n",
    "    #https://stackoverflow.com/a/22259008/4084039"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "if os.path.isfile('train_after_eda.csv'):\n",
    "    filename = \"test_after_eda.csv\"\n",
    "    # you uncomment this line, if you dont know the lentgh of the file name\n",
    "    # here we have hardcoded the number of lines as 3775008\n",
    "    # n_test = sum(1 for line in open(filename)) #number of records in file (excludes header)\n",
    "    n_test = 3775006\n",
    "    s = 50000 #desired sample size\n",
    "    skip_test = sorted(random.sample(range(1,n_test+1),n_test-s))\n",
    "    #https://stackoverflow.com/a/22259008/4084039"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of rows in the train data file: 15100028\n",
      "Number of rows we are going to elimiate in train data are 15000028\n",
      "Number of rows in the test data file: 3775006\n",
      "Number of rows we are going to elimiate in test data are 3725006\n"
     ]
    }
   ],
   "source": [
    "print(\"Number of rows in the train data file:\", n_train)\n",
    "print(\"Number of rows we are going to elimiate in train data are\",len(skip_train))\n",
    "print(\"Number of rows in the test data file:\", n_test)\n",
    "print(\"Number of rows we are going to elimiate in test data are\",len(skip_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Our train matrix size  (100002, 3)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link\n",
       "0       273084           1505602               1\n",
       "1       350205             76813               1"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train = pd.read_csv('train_after_eda.csv', skiprows=skip_train, names=['source_node', 'destination_node'])\n",
    "df_final_train['indicator_link'] = pd.read_csv('train_y.csv', skiprows=skip_train, names=['indicator_link'])\n",
    "print(\"Our train matrix size \",df_final_train.shape)\n",
    "df_final_train.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Our test matrix size  (50002, 3)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>848424</td>\n",
       "      <td>784690</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>264224</td>\n",
       "      <td>132395</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link\n",
       "0       848424            784690               1\n",
       "1       264224            132395               1"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_test = pd.read_csv('test_after_eda.csv', skiprows=skip_test, names=['source_node', 'destination_node'])\n",
    "df_final_test['indicator_link'] = pd.read_csv('test_y.csv', skiprows=skip_test, names=['indicator_link'])\n",
    "print(\"Our test matrix size \",df_final_test.shape)\n",
    "df_final_test.head(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2 Adding a set of features\n",
    "\n",
    "__we will create these each of these features for both train and test data points__\n",
    "<ol>\n",
    "<li>jaccard_followers</li>\n",
    "<li>jaccard_followees</li>\n",
    "<li>cosine_followers</li>\n",
    "<li>cosine_followees</li>\n",
    "<li>num_followers_s</li>\n",
    "<li>num_followees_s</li>\n",
    "<li>num_followers_d</li>\n",
    "<li>num_followees_d</li>\n",
    "<li>inter_followers</li>\n",
    "<li>inter_followees</li>\n",
    "</ol>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('data/fea_sample/storage_sample_stage1.h5'):\n",
    "    #mapping jaccrd followers to train and test data\n",
    "    df_final_train['jaccard_followers'] = df_final_train.apply(lambda row:\n",
    "                                            jaccard_for_followers(row['source_node'],row['destination_node']),axis=1)\n",
    "    df_final_test['jaccard_followers'] = df_final_test.apply(lambda row:\n",
    "                                            jaccard_for_followers(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    #mapping jaccrd followees to train and test data\n",
    "    df_final_train['jaccard_followees'] = df_final_train.apply(lambda row:\n",
    "                                            jaccard_for_followees(row['source_node'],row['destination_node']),axis=1)\n",
    "    df_final_test['jaccard_followees'] = df_final_test.apply(lambda row:\n",
    "                                            jaccard_for_followees(row['source_node'],row['destination_node']),axis=1)\n",
    "    \n",
    "\n",
    "        #mapping jaccrd followers to train and test data\n",
    "    df_final_train['cosine_followers'] = df_final_train.apply(lambda row:\n",
    "                                            cosine_for_followers(row['source_node'],row['destination_node']),axis=1)\n",
    "    df_final_test['cosine_followers'] = df_final_test.apply(lambda row:\n",
    "                                            cosine_for_followers(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    #mapping jaccrd followees to train and test data\n",
    "    df_final_train['cosine_followees'] = df_final_train.apply(lambda row:\n",
    "                                            cosine_for_followees(row['source_node'],row['destination_node']),axis=1)\n",
    "    df_final_test['cosine_followees'] = df_final_test.apply(lambda row:\n",
    "                                            cosine_for_followees(row['source_node'],row['destination_node']),axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_features_stage1(df_final):\n",
    "    #calculating no of followers followees for source and destination\n",
    "    #calculating intersection of followers and followees for source and destination\n",
    "    num_followers_s=[]\n",
    "    num_followees_s=[]\n",
    "    num_followers_d=[]\n",
    "    num_followees_d=[]\n",
    "    inter_followers=[]\n",
    "    inter_followees=[]\n",
    "    for i,row in df_final.iterrows():\n",
    "        try:\n",
    "            s1=set(train_graph.predecessors(row['source_node']))\n",
    "            s2=set(train_graph.successors(row['source_node']))\n",
    "        except:\n",
    "            s1 = set()\n",
    "            s2 = set()\n",
    "        try:\n",
    "            d1=set(train_graph.predecessors(row['destination_node']))\n",
    "            d2=set(train_graph.successors(row['destination_node']))\n",
    "        except:\n",
    "            d1 = set()\n",
    "            d2 = set()\n",
    "        num_followers_s.append(len(s1))\n",
    "        num_followees_s.append(len(s2))\n",
    "\n",
    "        num_followers_d.append(len(d1))\n",
    "        num_followees_d.append(len(d2))\n",
    "\n",
    "        inter_followers.append(len(s1.intersection(d1)))\n",
    "        inter_followees.append(len(s2.intersection(d2)))\n",
    "    \n",
    "    return num_followers_s, num_followers_d, num_followees_s, num_followees_d, inter_followers, inter_followees"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('storage_sample_stage1.h5'):\n",
    "    df_final_train['num_followers_s'], df_final_train['num_followers_d'], \\\n",
    "    df_final_train['num_followees_s'], df_final_train['num_followees_d'], \\\n",
    "    df_final_train['inter_followers'], df_final_train['inter_followees']= compute_features_stage1(df_final_train)\n",
    "    \n",
    "    df_final_test['num_followers_s'], df_final_test['num_followers_d'], \\\n",
    "    df_final_test['num_followees_s'], df_final_test['num_followees_d'], \\\n",
    "    df_final_test['inter_followers'], df_final_test['inter_followees']= compute_features_stage1(df_final_test)\n",
    "    \n",
    "    hdf = HDFStore('storage_sample_stage1.h5')\n",
    "    hdf.put('train_df',df_final_train, format='table', data_columns=True)\n",
    "    hdf.put('test_df',df_final_test, format='table', data_columns=True)\n",
    "    hdf.close()\n",
    "else:\n",
    "    df_final_train = read_hdf('storage_sample_stage1.h5', 'train_df',mode='r')\n",
    "    df_final_test = read_hdf('storage_sample_stage1.h5', 'test_df',mode='r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.3 Adding new set of features\n",
    "\n",
    "__we will create these each of these features for both train and test data points__\n",
    "<ol>\n",
    "<li>adar index</li>\n",
    "<li>is following back</li>\n",
    "<li>belongs to same weakly connect components</li>\n",
    "<li>shortest path between source and destination</li>\n",
    "</ol>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('storage_sample_stage2.h5'):\n",
    "    #mapping adar index on train\n",
    "    df_final_train['adar_index'] = df_final_train.apply(lambda row: calc_adar_in(row['source_node'],row['destination_node']),axis=1)\n",
    "    #mapping adar index on test\n",
    "    df_final_test['adar_index'] = df_final_test.apply(lambda row: calc_adar_in(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    #--------------------------------------------------------------------------------------------------------\n",
    "    #mapping followback or not on train\n",
    "    df_final_train['follows_back'] = df_final_train.apply(lambda row: follows_back(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    #mapping followback or not on test\n",
    "    df_final_test['follows_back'] = df_final_test.apply(lambda row: follows_back(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    #--------------------------------------------------------------------------------------------------------\n",
    "    #mapping same component of wcc or not on train\n",
    "    df_final_train['same_comp'] = df_final_train.apply(lambda row: belongs_to_same_wcc(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    ##mapping same component of wcc or not on train\n",
    "    df_final_test['same_comp'] = df_final_test.apply(lambda row: belongs_to_same_wcc(row['source_node'],row['destination_node']),axis=1)\n",
    "    \n",
    "    --------------------------------------------------------------------------------------------------------\n",
    "    #mapping shortest path on train \n",
    "    df_final_train['shortest_path'] = df_final_train.apply(lambda row: compute_shortest_path_length(row['source_node'],row['destination_node']),axis=1)\n",
    "    #mapping shortest path on test\n",
    "    df_final_test['shortest_path'] = df_final_test.apply(lambda row: compute_shortest_path_length(row['source_node'],row['destination_node']),axis=1)\n",
    "\n",
    "    hdf = HDFStore('storage_sample_stage2.h5')\n",
    "    hdf.put('train_df',df_final_train, format='table', data_columns=True)\n",
    "    hdf.put('test_df',df_final_test, format='table', data_columns=True)\n",
    "    hdf.close()\n",
    "else:\n",
    "    df_final_train = read_hdf('storage_sample_stage2.h5', 'train_df',mode='r')\n",
    "    df_final_test = read_hdf('storage_sample_stage2.h5', 'test_df',mode='r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.4 Adding new set of features\n",
    "\n",
    "__we will create these each of these features for both train and test data points__\n",
    "<ol>\n",
    "<li>Weight Features\n",
    "    <ul>\n",
    "        <li>weight of incoming edges</li>\n",
    "        <li>weight of outgoing edges</li>\n",
    "        <li>weight of incoming edges + weight of outgoing edges</li>\n",
    "        <li>weight of incoming edges * weight of outgoing edges</li>\n",
    "        <li>2*weight of incoming edges + weight of outgoing edges</li>\n",
    "        <li>weight of incoming edges + 2*weight of outgoing edges</li>\n",
    "    </ul>\n",
    "</li>\n",
    "<li>Page Ranking of source</li>\n",
    "<li>Page Ranking of dest</li>\n",
    "<li>katz of source</li>\n",
    "<li>katz of dest</li>\n",
    "<li>hubs of source</li>\n",
    "<li>hubs of dest</li>\n",
    "<li>authorities_s of source</li>\n",
    "<li>authorities_s of dest</li>\n",
    "</ol>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Weight Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to determine the similarity of nodes, an edge weight value was calculated between nodes. Edge weight decreases as the neighbor count goes up. Intuitively, consider one million people following a celebrity on a social network then chances are most of them never met each other or the celebrity. On the other hand, if a user has 30 contacts in his/her social network, the chances are higher that many of them know each other. \n",
    "`credit` - Graph-based Features for Supervised Link Prediction\n",
    "William Cukierski, Benjamin Hamner, Bo Yang"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{equation}\n",
    "W = \\frac{1}{\\sqrt{1+|X|}}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "it is directed graph so calculated Weighted in and Weighted out differently"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|█████████████████████████████████████████████████████████████████████| 1780722/1780722 [02:29<00:00, 11913.43it/s]\n"
     ]
    }
   ],
   "source": [
    "#weight for source and destination of each link\n",
    "Weight_in = {}\n",
    "Weight_out = {}\n",
    "for i in  tqdm(train_graph.nodes()):\n",
    "    s1=set(train_graph.predecessors(i))\n",
    "    w_in = 1.0/(np.sqrt(1+len(s1)))\n",
    "    Weight_in[i]=w_in\n",
    "    \n",
    "    s2=set(train_graph.successors(i))\n",
    "    w_out = 1.0/(np.sqrt(1+len(s2)))\n",
    "    Weight_out[i]=w_out\n",
    "    \n",
    "#for imputing with mean\n",
    "mean_weight_in = np.mean(list(Weight_in.values()))\n",
    "mean_weight_out = np.mean(list(Weight_out.values()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('storage_sample_stage3.h5'):\n",
    "    #mapping to pandas train\n",
    "    df_final_train['weight_in'] = df_final_train.destination_node.apply(lambda x: Weight_in.get(x,mean_weight_in))\n",
    "    df_final_train['weight_out'] = df_final_train.source_node.apply(lambda x: Weight_out.get(x,mean_weight_out))\n",
    "\n",
    "    #mapping to pandas test\n",
    "    df_final_test['weight_in'] = df_final_test.destination_node.apply(lambda x: Weight_in.get(x,mean_weight_in))\n",
    "    df_final_test['weight_out'] = df_final_test.source_node.apply(lambda x: Weight_out.get(x,mean_weight_out))\n",
    "\n",
    "\n",
    "    #some features engineerings on the in and out weights\n",
    "    df_final_train['weight_f1'] = df_final_train.weight_in + df_final_train.weight_out\n",
    "    df_final_train['weight_f2'] = df_final_train.weight_in * df_final_train.weight_out\n",
    "    df_final_train['weight_f3'] = (2*df_final_train.weight_in + 1*df_final_train.weight_out)\n",
    "    df_final_train['weight_f4'] = (1*df_final_train.weight_in + 2*df_final_train.weight_out)\n",
    "\n",
    "    #some features engineerings on the in and out weights\n",
    "    df_final_test['weight_f1'] = df_final_test.weight_in + df_final_test.weight_out\n",
    "    df_final_test['weight_f2'] = df_final_test.weight_in * df_final_test.weight_out\n",
    "    df_final_test['weight_f3'] = (2*df_final_test.weight_in + 1*df_final_test.weight_out)\n",
    "    df_final_test['weight_f4'] = (1*df_final_test.weight_in + 2*df_final_test.weight_out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('storage_sample_stage3.h5'):\n",
    "    \n",
    "    #page rank for source and destination in Train and Test\n",
    "    #if anything not there in train graph then adding mean page rank \n",
    "    df_final_train['page_rank_s'] = df_final_train.source_node.apply(lambda x:pr.get(x,mean_pr))\n",
    "    df_final_train['page_rank_d'] = df_final_train.destination_node.apply(lambda x:pr.get(x,mean_pr))\n",
    "\n",
    "    df_final_test['page_rank_s'] = df_final_test.source_node.apply(lambda x:pr.get(x,mean_pr))\n",
    "    df_final_test['page_rank_d'] = df_final_test.destination_node.apply(lambda x:pr.get(x,mean_pr))\n",
    "    #================================================================================\n",
    "\n",
    "    #Katz centrality score for source and destination in Train and test\n",
    "    #if anything not there in train graph then adding mean katz score\n",
    "    df_final_train['katz_s'] = df_final_train.source_node.apply(lambda x: katz.get(x,mean_katz))\n",
    "    df_final_train['katz_d'] = df_final_train.destination_node.apply(lambda x: katz.get(x,mean_katz))\n",
    "\n",
    "    df_final_test['katz_s'] = df_final_test.source_node.apply(lambda x: katz.get(x,mean_katz))\n",
    "    df_final_test['katz_d'] = df_final_test.destination_node.apply(lambda x: katz.get(x,mean_katz))\n",
    "    #================================================================================\n",
    "\n",
    "    #Hits algorithm score for source and destination in Train and test\n",
    "    #if anything not there in train graph then adding 0\n",
    "    df_final_train['hubs_s'] = df_final_train.source_node.apply(lambda x: hits[0].get(x,0))\n",
    "    df_final_train['hubs_d'] = df_final_train.destination_node.apply(lambda x: hits[0].get(x,0))\n",
    "\n",
    "    df_final_test['hubs_s'] = df_final_test.source_node.apply(lambda x: hits[0].get(x,0))\n",
    "    df_final_test['hubs_d'] = df_final_test.destination_node.apply(lambda x: hits[0].get(x,0))\n",
    "    #================================================================================\n",
    "\n",
    "    #Hits algorithm score for source and destination in Train and Test\n",
    "    #if anything not there in train graph then adding 0\n",
    "    df_final_train['authorities_s'] = df_final_train.source_node.apply(lambda x: hits[1].get(x,0))\n",
    "    df_final_train['authorities_d'] = df_final_train.destination_node.apply(lambda x: hits[1].get(x,0))\n",
    "\n",
    "    df_final_test['authorities_s'] = df_final_test.source_node.apply(lambda x: hits[1].get(x,0))\n",
    "    df_final_test['authorities_d'] = df_final_test.destination_node.apply(lambda x: hits[1].get(x,0))\n",
    "    #================================================================================\n",
    "\n",
    "    hdf = HDFStore('storage_sample_stage3.h5')\n",
    "    hdf.put('train_df',df_final_train, format='table', data_columns=True)\n",
    "    hdf.put('test_df',df_final_test, format='table', data_columns=True)\n",
    "    hdf.close()\n",
    "else:\n",
    "    df_final_train = read_hdf('storage_sample_stage3.h5', 'train_df',mode='r')\n",
    "    df_final_test = read_hdf('storage_sample_stage3.h5', 'test_df',mode='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>weight_f3</th>\n",
       "      <th>weight_f4</th>\n",
       "      <th>page_rank_s</th>\n",
       "      <th>page_rank_d</th>\n",
       "      <th>katz_s</th>\n",
       "      <th>katz_d</th>\n",
       "      <th>hubs_s</th>\n",
       "      <th>hubs_d</th>\n",
       "      <th>authorities_s</th>\n",
       "      <th>authorities_d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "      <td>...</td>\n",
       "      <td>1.005929</td>\n",
       "      <td>0.877964</td>\n",
       "      <td>2.045290e-06</td>\n",
       "      <td>3.459963e-07</td>\n",
       "      <td>0.000773</td>\n",
       "      <td>0.000756</td>\n",
       "      <td>1.943132e-13</td>\n",
       "      <td>1.941103e-13</td>\n",
       "      <td>9.226339e-16</td>\n",
       "      <td>2.231877e-15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>1.333333</td>\n",
       "      <td>1.166667</td>\n",
       "      <td>1.042951e-06</td>\n",
       "      <td>5.832326e-07</td>\n",
       "      <td>0.000754</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>5.829475e-17</td>\n",
       "      <td>2.905479e-19</td>\n",
       "      <td>1.361972e-15</td>\n",
       "      <td>4.121601e-19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1200905</td>\n",
       "      <td>283891</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.052632</td>\n",
       "      <td>0.055556</td>\n",
       "      <td>0.109109</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0.932665</td>\n",
       "      <td>1.033279</td>\n",
       "      <td>7.257025e-07</td>\n",
       "      <td>1.219809e-06</td>\n",
       "      <td>0.000767</td>\n",
       "      <td>0.000778</td>\n",
       "      <td>1.651997e-17</td>\n",
       "      <td>5.491622e-18</td>\n",
       "      <td>9.480405e-17</td>\n",
       "      <td>1.716154e-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>247831</td>\n",
       "      <td>1403584</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>...</td>\n",
       "      <td>1.014128</td>\n",
       "      <td>0.894362</td>\n",
       "      <td>2.245413e-06</td>\n",
       "      <td>4.374838e-07</td>\n",
       "      <td>0.000820</td>\n",
       "      <td>0.000755</td>\n",
       "      <td>4.819150e-15</td>\n",
       "      <td>8.277527e-17</td>\n",
       "      <td>6.286850e-15</td>\n",
       "      <td>6.696212e-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233609</td>\n",
       "      <td>1837109</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>1.532665</td>\n",
       "      <td>1.333279</td>\n",
       "      <td>5.519786e-07</td>\n",
       "      <td>3.047875e-07</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000739</td>\n",
       "      <td>2.595947e-17</td>\n",
       "      <td>2.078530e-17</td>\n",
       "      <td>5.179835e-17</td>\n",
       "      <td>5.666614e-18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       273084           1505602               1                  0   \n",
       "1       350205             76813               1                  0   \n",
       "2      1200905            283891               1                  0   \n",
       "3       247831           1403584               1                  0   \n",
       "4       233609           1837109               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0           0.000000          0.000000          0.000000               11   \n",
       "1           0.000000          0.000000          0.000000                6   \n",
       "2           0.052632          0.055556          0.109109                9   \n",
       "3           0.000000          0.000000          0.000000               23   \n",
       "4           0.000000          0.000000          0.000000                3   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...  weight_f3  weight_f4   page_rank_s  \\\n",
       "0                6               15  ...   1.005929   0.877964  2.045290e-06   \n",
       "1                3                8  ...   1.333333   1.166667  1.042951e-06   \n",
       "2               12                6  ...   0.932665   1.033279  7.257025e-07   \n",
       "3                6               14  ...   1.014128   0.894362  2.245413e-06   \n",
       "4                2                6  ...   1.532665   1.333279  5.519786e-07   \n",
       "\n",
       "    page_rank_d    katz_s    katz_d        hubs_s        hubs_d  \\\n",
       "0  3.459963e-07  0.000773  0.000756  1.943132e-13  1.941103e-13   \n",
       "1  5.832326e-07  0.000754  0.000743  5.829475e-17  2.905479e-19   \n",
       "2  1.219809e-06  0.000767  0.000778  1.651997e-17  5.491622e-18   \n",
       "3  4.374838e-07  0.000820  0.000755  4.819150e-15  8.277527e-17   \n",
       "4  3.047875e-07  0.000743  0.000739  2.595947e-17  2.078530e-17   \n",
       "\n",
       "   authorities_s  authorities_d  \n",
       "0   9.226339e-16   2.231877e-15  \n",
       "1   1.361972e-15   4.121601e-19  \n",
       "2   9.480405e-17   1.716154e-17  \n",
       "3   6.286850e-15   6.696212e-17  \n",
       "4   5.179835e-17   5.666614e-18  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Adding new feature Preferential Attachement "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " One well-known concept in social networks is that users with many friends tend to create more connections in the future. This is due to the fact that in some social networks, like in finance, the rich get richer. We estimate how ”rich” our two vertices are by calculating the multiplication between the number of friends (|Γ(x)|) or followers each vertex has."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Preferential Attachement for followers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>weight_f4</th>\n",
       "      <th>page_rank_s</th>\n",
       "      <th>page_rank_d</th>\n",
       "      <th>katz_s</th>\n",
       "      <th>katz_d</th>\n",
       "      <th>hubs_s</th>\n",
       "      <th>hubs_d</th>\n",
       "      <th>authorities_s</th>\n",
       "      <th>authorities_d</th>\n",
       "      <th>prefer_Attach_followers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "      <td>...</td>\n",
       "      <td>0.877964</td>\n",
       "      <td>2.045290e-06</td>\n",
       "      <td>3.459963e-07</td>\n",
       "      <td>0.000773</td>\n",
       "      <td>0.000756</td>\n",
       "      <td>1.943132e-13</td>\n",
       "      <td>1.941103e-13</td>\n",
       "      <td>9.226339e-16</td>\n",
       "      <td>2.231877e-15</td>\n",
       "      <td>66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>1.166667</td>\n",
       "      <td>1.042951e-06</td>\n",
       "      <td>5.832326e-07</td>\n",
       "      <td>0.000754</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>5.829475e-17</td>\n",
       "      <td>2.905479e-19</td>\n",
       "      <td>1.361972e-15</td>\n",
       "      <td>4.121601e-19</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1200905</td>\n",
       "      <td>283891</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.052632</td>\n",
       "      <td>0.055556</td>\n",
       "      <td>0.109109</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>1.033279</td>\n",
       "      <td>7.257025e-07</td>\n",
       "      <td>1.219809e-06</td>\n",
       "      <td>0.000767</td>\n",
       "      <td>0.000778</td>\n",
       "      <td>1.651997e-17</td>\n",
       "      <td>5.491622e-18</td>\n",
       "      <td>9.480405e-17</td>\n",
       "      <td>1.716154e-17</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>247831</td>\n",
       "      <td>1403584</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>...</td>\n",
       "      <td>0.894362</td>\n",
       "      <td>2.245413e-06</td>\n",
       "      <td>4.374838e-07</td>\n",
       "      <td>0.000820</td>\n",
       "      <td>0.000755</td>\n",
       "      <td>4.819150e-15</td>\n",
       "      <td>8.277527e-17</td>\n",
       "      <td>6.286850e-15</td>\n",
       "      <td>6.696212e-17</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233609</td>\n",
       "      <td>1837109</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>1.333279</td>\n",
       "      <td>5.519786e-07</td>\n",
       "      <td>3.047875e-07</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000739</td>\n",
       "      <td>2.595947e-17</td>\n",
       "      <td>2.078530e-17</td>\n",
       "      <td>5.179835e-17</td>\n",
       "      <td>5.666614e-18</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       273084           1505602               1                  0   \n",
       "1       350205             76813               1                  0   \n",
       "2      1200905            283891               1                  0   \n",
       "3       247831           1403584               1                  0   \n",
       "4       233609           1837109               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0           0.000000          0.000000          0.000000               11   \n",
       "1           0.000000          0.000000          0.000000                6   \n",
       "2           0.052632          0.055556          0.109109                9   \n",
       "3           0.000000          0.000000          0.000000               23   \n",
       "4           0.000000          0.000000          0.000000                3   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...  weight_f4   page_rank_s  \\\n",
       "0                6               15  ...   0.877964  2.045290e-06   \n",
       "1                3                8  ...   1.166667  1.042951e-06   \n",
       "2               12                6  ...   1.033279  7.257025e-07   \n",
       "3                6               14  ...   0.894362  2.245413e-06   \n",
       "4                2                6  ...   1.333279  5.519786e-07   \n",
       "\n",
       "    page_rank_d    katz_s    katz_d        hubs_s        hubs_d  \\\n",
       "0  3.459963e-07  0.000773  0.000756  1.943132e-13  1.941103e-13   \n",
       "1  5.832326e-07  0.000754  0.000743  5.829475e-17  2.905479e-19   \n",
       "2  1.219809e-06  0.000767  0.000778  1.651997e-17  5.491622e-18   \n",
       "3  4.374838e-07  0.000820  0.000755  4.819150e-15  8.277527e-17   \n",
       "4  3.047875e-07  0.000743  0.000739  2.595947e-17  2.078530e-17   \n",
       "\n",
       "   authorities_s  authorities_d  prefer_Attach_followers  \n",
       "0   9.226339e-16   2.231877e-15                       66  \n",
       "1   1.361972e-15   4.121601e-19                       18  \n",
       "2   9.480405e-17   1.716154e-17                      108  \n",
       "3   6.286850e-15   6.696212e-17                      138  \n",
       "4   5.179835e-17   5.666614e-18                        6  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#for train dataset\n",
    "nfs=np.array(df_final_train['num_followers_s'])\n",
    "nfd=np.array(df_final_train['num_followers_d'])\n",
    "preferential_followers=[]\n",
    "for i in range(len(nfs)):\n",
    "    preferential_followers.append(nfd[i]*nfs[i])\n",
    "df_final_train['prefer_Attach_followers']= preferential_followers\n",
    "df_final_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>weight_f4</th>\n",
       "      <th>page_rank_s</th>\n",
       "      <th>page_rank_d</th>\n",
       "      <th>katz_s</th>\n",
       "      <th>katz_d</th>\n",
       "      <th>hubs_s</th>\n",
       "      <th>hubs_d</th>\n",
       "      <th>authorities_s</th>\n",
       "      <th>authorities_d</th>\n",
       "      <th>prefer_Attach_followers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>848424</td>\n",
       "      <td>784690</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.029161</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>1.014128</td>\n",
       "      <td>6.557971e-07</td>\n",
       "      <td>1.559547e-06</td>\n",
       "      <td>0.000754</td>\n",
       "      <td>0.000786</td>\n",
       "      <td>3.243237e-16</td>\n",
       "      <td>1.745627e-16</td>\n",
       "      <td>2.969838e-15</td>\n",
       "      <td>9.269213e-14</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>264224</td>\n",
       "      <td>132395</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.353553</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>1.207107</td>\n",
       "      <td>5.176389e-07</td>\n",
       "      <td>3.594821e-07</td>\n",
       "      <td>0.000763</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>3.532699e-14</td>\n",
       "      <td>3.543278e-14</td>\n",
       "      <td>8.377534e-15</td>\n",
       "      <td>4.484954e-15</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>289059</td>\n",
       "      <td>253522</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.612519</td>\n",
       "      <td>5.615700e-07</td>\n",
       "      <td>9.182847e-07</td>\n",
       "      <td>0.000748</td>\n",
       "      <td>0.000750</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>5.261915e-19</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.210502e-19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1749265</td>\n",
       "      <td>963357</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.1875</td>\n",
       "      <td>0.121212</td>\n",
       "      <td>0.316228</td>\n",
       "      <td>9</td>\n",
       "      <td>11</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>0.921131</td>\n",
       "      <td>8.417332e-07</td>\n",
       "      <td>1.159612e-06</td>\n",
       "      <td>0.000766</td>\n",
       "      <td>0.000774</td>\n",
       "      <td>9.697880e-17</td>\n",
       "      <td>2.126697e-16</td>\n",
       "      <td>7.230199e-16</td>\n",
       "      <td>1.042936e-15</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1199100</td>\n",
       "      <td>991335</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>...</td>\n",
       "      <td>1.192178</td>\n",
       "      <td>9.533211e-07</td>\n",
       "      <td>1.863186e-07</td>\n",
       "      <td>0.000807</td>\n",
       "      <td>0.000736</td>\n",
       "      <td>3.895908e-13</td>\n",
       "      <td>2.958046e-15</td>\n",
       "      <td>4.520793e-14</td>\n",
       "      <td>1.400417e-15</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       848424            784690               1                  0   \n",
       "1       264224            132395               1                  0   \n",
       "2       289059            253522               1                  0   \n",
       "3      1749265            963357               1                  0   \n",
       "4      1199100            991335               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0             0.0000          0.029161          0.000000                6   \n",
       "1             0.4000          0.353553          0.571429                8   \n",
       "2             0.0000          0.000000          0.000000                0   \n",
       "3             0.1875          0.121212          0.316228                9   \n",
       "4             0.0000          0.000000          0.000000               17   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...  weight_f4   page_rank_s  \\\n",
       "0               14                6  ...   1.014128  6.557971e-07   \n",
       "1                3                7  ...   1.207107  5.176389e-07   \n",
       "2                5                0  ...   1.612519  5.615700e-07   \n",
       "3               11                9  ...   0.921131  8.417332e-07   \n",
       "4                1               16  ...   1.192178  9.533211e-07   \n",
       "\n",
       "    page_rank_d    katz_s    katz_d        hubs_s        hubs_d  \\\n",
       "0  1.559547e-06  0.000754  0.000786  3.243237e-16  1.745627e-16   \n",
       "1  3.594821e-07  0.000763  0.000743  3.532699e-14  3.543278e-14   \n",
       "2  9.182847e-07  0.000748  0.000750  0.000000e+00  5.261915e-19   \n",
       "3  1.159612e-06  0.000766  0.000774  9.697880e-17  2.126697e-16   \n",
       "4  1.863186e-07  0.000807  0.000736  3.895908e-13  2.958046e-15   \n",
       "\n",
       "   authorities_s  authorities_d  prefer_Attach_followers  \n",
       "0   2.969838e-15   9.269213e-14                       84  \n",
       "1   8.377534e-15   4.484954e-15                       24  \n",
       "2   0.000000e+00   1.210502e-19                        0  \n",
       "3   7.230199e-16   1.042936e-15                       99  \n",
       "4   4.520793e-14   1.400417e-15                       17  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#for test dataset\n",
    "nfs=np.array(df_final_test['num_followers_s'])\n",
    "nfd=np.array(df_final_test['num_followers_d'])\n",
    "preferential_followers=[]\n",
    "for i in range(len(nfs)):\n",
    "    preferential_followers.append(nfd[i]*nfs[i])\n",
    "df_final_test['prefer_Attach_followers']= preferential_followers\n",
    "df_final_test.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Preferential Attachement for followers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>page_rank_s</th>\n",
       "      <th>page_rank_d</th>\n",
       "      <th>katz_s</th>\n",
       "      <th>katz_d</th>\n",
       "      <th>hubs_s</th>\n",
       "      <th>hubs_d</th>\n",
       "      <th>authorities_s</th>\n",
       "      <th>authorities_d</th>\n",
       "      <th>prefer_Attach_followers</th>\n",
       "      <th>prefer_Attach_followees</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "      <td>...</td>\n",
       "      <td>2.045290e-06</td>\n",
       "      <td>3.459963e-07</td>\n",
       "      <td>0.000773</td>\n",
       "      <td>0.000756</td>\n",
       "      <td>1.943132e-13</td>\n",
       "      <td>1.941103e-13</td>\n",
       "      <td>9.226339e-16</td>\n",
       "      <td>2.231877e-15</td>\n",
       "      <td>66</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>1.042951e-06</td>\n",
       "      <td>5.832326e-07</td>\n",
       "      <td>0.000754</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>5.829475e-17</td>\n",
       "      <td>2.905479e-19</td>\n",
       "      <td>1.361972e-15</td>\n",
       "      <td>4.121601e-19</td>\n",
       "      <td>18</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1200905</td>\n",
       "      <td>283891</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.052632</td>\n",
       "      <td>0.055556</td>\n",
       "      <td>0.109109</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>7.257025e-07</td>\n",
       "      <td>1.219809e-06</td>\n",
       "      <td>0.000767</td>\n",
       "      <td>0.000778</td>\n",
       "      <td>1.651997e-17</td>\n",
       "      <td>5.491622e-18</td>\n",
       "      <td>9.480405e-17</td>\n",
       "      <td>1.716154e-17</td>\n",
       "      <td>108</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>247831</td>\n",
       "      <td>1403584</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>...</td>\n",
       "      <td>2.245413e-06</td>\n",
       "      <td>4.374838e-07</td>\n",
       "      <td>0.000820</td>\n",
       "      <td>0.000755</td>\n",
       "      <td>4.819150e-15</td>\n",
       "      <td>8.277527e-17</td>\n",
       "      <td>6.286850e-15</td>\n",
       "      <td>6.696212e-17</td>\n",
       "      <td>138</td>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233609</td>\n",
       "      <td>1837109</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>5.519786e-07</td>\n",
       "      <td>3.047875e-07</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000739</td>\n",
       "      <td>2.595947e-17</td>\n",
       "      <td>2.078530e-17</td>\n",
       "      <td>5.179835e-17</td>\n",
       "      <td>5.666614e-18</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 33 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       273084           1505602               1                  0   \n",
       "1       350205             76813               1                  0   \n",
       "2      1200905            283891               1                  0   \n",
       "3       247831           1403584               1                  0   \n",
       "4       233609           1837109               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0           0.000000          0.000000          0.000000               11   \n",
       "1           0.000000          0.000000          0.000000                6   \n",
       "2           0.052632          0.055556          0.109109                9   \n",
       "3           0.000000          0.000000          0.000000               23   \n",
       "4           0.000000          0.000000          0.000000                3   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...   page_rank_s   page_rank_d  \\\n",
       "0                6               15  ...  2.045290e-06  3.459963e-07   \n",
       "1                3                8  ...  1.042951e-06  5.832326e-07   \n",
       "2               12                6  ...  7.257025e-07  1.219809e-06   \n",
       "3                6               14  ...  2.245413e-06  4.374838e-07   \n",
       "4                2                6  ...  5.519786e-07  3.047875e-07   \n",
       "\n",
       "     katz_s    katz_d        hubs_s        hubs_d  authorities_s  \\\n",
       "0  0.000773  0.000756  1.943132e-13  1.941103e-13   9.226339e-16   \n",
       "1  0.000754  0.000743  5.829475e-17  2.905479e-19   1.361972e-15   \n",
       "2  0.000767  0.000778  1.651997e-17  5.491622e-18   9.480405e-17   \n",
       "3  0.000820  0.000755  4.819150e-15  8.277527e-17   6.286850e-15   \n",
       "4  0.000743  0.000739  2.595947e-17  2.078530e-17   5.179835e-17   \n",
       "\n",
       "   authorities_d  prefer_Attach_followers  prefer_Attach_followees  \n",
       "0   2.231877e-15                       66                      120  \n",
       "1   4.121601e-19                       18                       32  \n",
       "2   1.716154e-17                      108                       84  \n",
       "3   6.696212e-17                      138                       98  \n",
       "4   5.666614e-18                        6                       12  \n",
       "\n",
       "[5 rows x 33 columns]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#for train dataset\n",
    "nfs=np.array(df_final_train['num_followees_s'])\n",
    "nfd=np.array(df_final_train['num_followees_d'])\n",
    "preferential_followees=[]\n",
    "for i in range(len(nfs)):\n",
    "    preferential_followees.append(nfd[i]*nfs[i])\n",
    "df_final_train['prefer_Attach_followees']= preferential_followees\n",
    "df_final_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>page_rank_s</th>\n",
       "      <th>page_rank_d</th>\n",
       "      <th>katz_s</th>\n",
       "      <th>katz_d</th>\n",
       "      <th>hubs_s</th>\n",
       "      <th>hubs_d</th>\n",
       "      <th>authorities_s</th>\n",
       "      <th>authorities_d</th>\n",
       "      <th>prefer_Attach_followers</th>\n",
       "      <th>prefer_Attach_followees</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>848424</td>\n",
       "      <td>784690</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.029161</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>6.557971e-07</td>\n",
       "      <td>1.559547e-06</td>\n",
       "      <td>0.000754</td>\n",
       "      <td>0.000786</td>\n",
       "      <td>3.243237e-16</td>\n",
       "      <td>1.745627e-16</td>\n",
       "      <td>2.969838e-15</td>\n",
       "      <td>9.269213e-14</td>\n",
       "      <td>84</td>\n",
       "      <td>54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>264224</td>\n",
       "      <td>132395</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.353553</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>5.176389e-07</td>\n",
       "      <td>3.594821e-07</td>\n",
       "      <td>0.000763</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>3.532699e-14</td>\n",
       "      <td>3.543278e-14</td>\n",
       "      <td>8.377534e-15</td>\n",
       "      <td>4.484954e-15</td>\n",
       "      <td>24</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>289059</td>\n",
       "      <td>253522</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>5.615700e-07</td>\n",
       "      <td>9.182847e-07</td>\n",
       "      <td>0.000748</td>\n",
       "      <td>0.000750</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>5.261915e-19</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.210502e-19</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1749265</td>\n",
       "      <td>963357</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.1875</td>\n",
       "      <td>0.121212</td>\n",
       "      <td>0.316228</td>\n",
       "      <td>9</td>\n",
       "      <td>11</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>8.417332e-07</td>\n",
       "      <td>1.159612e-06</td>\n",
       "      <td>0.000766</td>\n",
       "      <td>0.000774</td>\n",
       "      <td>9.697880e-17</td>\n",
       "      <td>2.126697e-16</td>\n",
       "      <td>7.230199e-16</td>\n",
       "      <td>1.042936e-15</td>\n",
       "      <td>99</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1199100</td>\n",
       "      <td>991335</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>...</td>\n",
       "      <td>9.533211e-07</td>\n",
       "      <td>1.863186e-07</td>\n",
       "      <td>0.000807</td>\n",
       "      <td>0.000736</td>\n",
       "      <td>3.895908e-13</td>\n",
       "      <td>2.958046e-15</td>\n",
       "      <td>4.520793e-14</td>\n",
       "      <td>1.400417e-15</td>\n",
       "      <td>17</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 33 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       848424            784690               1                  0   \n",
       "1       264224            132395               1                  0   \n",
       "2       289059            253522               1                  0   \n",
       "3      1749265            963357               1                  0   \n",
       "4      1199100            991335               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0             0.0000          0.029161          0.000000                6   \n",
       "1             0.4000          0.353553          0.571429                8   \n",
       "2             0.0000          0.000000          0.000000                0   \n",
       "3             0.1875          0.121212          0.316228                9   \n",
       "4             0.0000          0.000000          0.000000               17   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...   page_rank_s   page_rank_d  \\\n",
       "0               14                6  ...  6.557971e-07  1.559547e-06   \n",
       "1                3                7  ...  5.176389e-07  3.594821e-07   \n",
       "2                5                0  ...  5.615700e-07  9.182847e-07   \n",
       "3               11                9  ...  8.417332e-07  1.159612e-06   \n",
       "4                1               16  ...  9.533211e-07  1.863186e-07   \n",
       "\n",
       "     katz_s    katz_d        hubs_s        hubs_d  authorities_s  \\\n",
       "0  0.000754  0.000786  3.243237e-16  1.745627e-16   2.969838e-15   \n",
       "1  0.000763  0.000743  3.532699e-14  3.543278e-14   8.377534e-15   \n",
       "2  0.000748  0.000750  0.000000e+00  5.261915e-19   0.000000e+00   \n",
       "3  0.000766  0.000774  9.697880e-17  2.126697e-16   7.230199e-16   \n",
       "4  0.000807  0.000736  3.895908e-13  2.958046e-15   4.520793e-14   \n",
       "\n",
       "   authorities_d  prefer_Attach_followers  prefer_Attach_followees  \n",
       "0   9.269213e-14                       84                       54  \n",
       "1   4.484954e-15                       24                       49  \n",
       "2   1.210502e-19                        0                        0  \n",
       "3   1.042936e-15                       99                       90  \n",
       "4   1.400417e-15                       17                       48  \n",
       "\n",
       "[5 rows x 33 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#for test dataset\n",
    "nfs=np.array(df_final_test['num_followees_s'])\n",
    "nfd=np.array(df_final_test['num_followees_d'])\n",
    "preferential_followees=[]\n",
    "for i in range(len(nfs)):\n",
    "    preferential_followees.append(nfd[i]*nfs[i])\n",
    "df_final_test['prefer_Attach_followees']= preferential_followees\n",
    "df_final_test.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.5 Adding new set of features\n",
    "\n",
    "__we will create these each of these features for both train and test data points__\n",
    "<ol>\n",
    "<li>SVD features for both source and destination</li>\n",
    "</ol>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "def svd(x, S):\n",
    "    try:\n",
    "        z = sadj_dict[x]\n",
    "        return S[z]\n",
    "    except:\n",
    "        return [0,0,0,0,0,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for svd features to get feature vector creating a dict node val and inedx in svd vector\n",
    "sadj_col = sorted(train_graph.nodes())\n",
    "sadj_dict = { val:idx for idx,val in enumerate(sadj_col)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "Adj = nx.adjacency_matrix(train_graph,nodelist=sorted(train_graph.nodes())).asfptype()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adjacency matrix Shape (1780722, 1780722)\n",
      "U Shape (1780722, 6)\n",
      "V Shape (6, 1780722)\n",
      "s Shape (6,)\n"
     ]
    }
   ],
   "source": [
    "U, s, V = svds(Adj, k = 6)\n",
    "print('Adjacency matrix Shape',Adj.shape)\n",
    "print('U Shape',U.shape)\n",
    "print('V Shape',V.shape)\n",
    "print('s Shape',s.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not os.path.isfile('storage_sample_stage4.h5'):\n",
    "    #===================================================================================================\n",
    "    \n",
    "    df_final_train[['svd_u_s_1', 'svd_u_s_2','svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6']] = \\\n",
    "    df_final_train.source_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n",
    "    \n",
    "    df_final_train[['svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5','svd_u_d_6']] = \\\n",
    "    df_final_train.destination_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n",
    "    #===================================================================================================\n",
    "    \n",
    "    df_final_train[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]] = \\\n",
    "    df_final_train.source_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n",
    "\n",
    "    df_final_train[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']] = \\\n",
    "    df_final_train.destination_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n",
    "    #===================================================================================================\n",
    "    \n",
    "    df_final_test[['svd_u_s_1', 'svd_u_s_2','svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6']] = \\\n",
    "    df_final_test.source_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n",
    "    \n",
    "    df_final_test[['svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5','svd_u_d_6']] = \\\n",
    "    df_final_test.destination_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n",
    "\n",
    "    #===================================================================================================\n",
    "    \n",
    "    df_final_test[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]] = \\\n",
    "    df_final_test.source_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n",
    "\n",
    "    df_final_test[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']] = \\\n",
    "    df_final_test.destination_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n",
    "    #===================================================================================================\n",
    "\n",
    "#     hdf = HDFStore('data/fea_sample/storage_sample_stage4.h5')\n",
    "#     hdf.put('train_df',df_final_train, format='table', data_columns=True)\n",
    "#     hdf.put('test_df',df_final_test, format='table', data_columns=True)\n",
    "#     hdf.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>svd_v_s_3</th>\n",
       "      <th>svd_v_s_4</th>\n",
       "      <th>svd_v_s_5</th>\n",
       "      <th>svd_v_s_6</th>\n",
       "      <th>svd_v_d_1</th>\n",
       "      <th>svd_v_d_2</th>\n",
       "      <th>svd_v_d_3</th>\n",
       "      <th>svd_v_d_4</th>\n",
       "      <th>svd_v_d_5</th>\n",
       "      <th>svd_v_d_6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "      <td>...</td>\n",
       "      <td>1.983697e-06</td>\n",
       "      <td>1.545085e-13</td>\n",
       "      <td>8.108376e-13</td>\n",
       "      <td>1.719695e-14</td>\n",
       "      <td>-1.355228e-12</td>\n",
       "      <td>4.675314e-13</td>\n",
       "      <td>1.128587e-06</td>\n",
       "      <td>6.616680e-14</td>\n",
       "      <td>9.771086e-13</td>\n",
       "      <td>4.159936e-14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>2.262950e-12</td>\n",
       "      <td>1.676833e-14</td>\n",
       "      <td>1.369978e-13</td>\n",
       "      <td>2.538590e-14</td>\n",
       "      <td>-5.351140e-16</td>\n",
       "      <td>1.080238e-15</td>\n",
       "      <td>1.262047e-13</td>\n",
       "      <td>2.101587e-16</td>\n",
       "      <td>5.708225e-15</td>\n",
       "      <td>7.682672e-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1200905</td>\n",
       "      <td>283891</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.052632</td>\n",
       "      <td>0.055556</td>\n",
       "      <td>0.109109</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>8.156521e-12</td>\n",
       "      <td>8.138929e-14</td>\n",
       "      <td>1.141195e-13</td>\n",
       "      <td>1.767060e-15</td>\n",
       "      <td>-1.988373e-13</td>\n",
       "      <td>4.622952e-12</td>\n",
       "      <td>4.031462e-11</td>\n",
       "      <td>2.463017e-14</td>\n",
       "      <td>3.474023e-13</td>\n",
       "      <td>3.198720e-16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>247831</td>\n",
       "      <td>1403584</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>...</td>\n",
       "      <td>1.879975e-10</td>\n",
       "      <td>5.069242e-12</td>\n",
       "      <td>1.558119e-12</td>\n",
       "      <td>1.171811e-13</td>\n",
       "      <td>-8.598428e-10</td>\n",
       "      <td>3.469093e-12</td>\n",
       "      <td>8.296850e-12</td>\n",
       "      <td>1.316249e-13</td>\n",
       "      <td>5.201666e-13</td>\n",
       "      <td>1.248111e-15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233609</td>\n",
       "      <td>1837109</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>5.322166e-13</td>\n",
       "      <td>7.873057e-14</td>\n",
       "      <td>2.786845e-12</td>\n",
       "      <td>9.654727e-16</td>\n",
       "      <td>-2.265220e-15</td>\n",
       "      <td>9.810811e-14</td>\n",
       "      <td>3.119181e-13</td>\n",
       "      <td>4.613249e-14</td>\n",
       "      <td>4.829071e-14</td>\n",
       "      <td>1.056205e-16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 57 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       273084           1505602               1                  0   \n",
       "1       350205             76813               1                  0   \n",
       "2      1200905            283891               1                  0   \n",
       "3       247831           1403584               1                  0   \n",
       "4       233609           1837109               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0           0.000000          0.000000          0.000000               11   \n",
       "1           0.000000          0.000000          0.000000                6   \n",
       "2           0.052632          0.055556          0.109109                9   \n",
       "3           0.000000          0.000000          0.000000               23   \n",
       "4           0.000000          0.000000          0.000000                3   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...     svd_v_s_3     svd_v_s_4  \\\n",
       "0                6               15  ...  1.983697e-06  1.545085e-13   \n",
       "1                3                8  ...  2.262950e-12  1.676833e-14   \n",
       "2               12                6  ...  8.156521e-12  8.138929e-14   \n",
       "3                6               14  ...  1.879975e-10  5.069242e-12   \n",
       "4                2                6  ...  5.322166e-13  7.873057e-14   \n",
       "\n",
       "      svd_v_s_5     svd_v_s_6     svd_v_d_1     svd_v_d_2     svd_v_d_3  \\\n",
       "0  8.108376e-13  1.719695e-14 -1.355228e-12  4.675314e-13  1.128587e-06   \n",
       "1  1.369978e-13  2.538590e-14 -5.351140e-16  1.080238e-15  1.262047e-13   \n",
       "2  1.141195e-13  1.767060e-15 -1.988373e-13  4.622952e-12  4.031462e-11   \n",
       "3  1.558119e-12  1.171811e-13 -8.598428e-10  3.469093e-12  8.296850e-12   \n",
       "4  2.786845e-12  9.654727e-16 -2.265220e-15  9.810811e-14  3.119181e-13   \n",
       "\n",
       "      svd_v_d_4     svd_v_d_5     svd_v_d_6  \n",
       "0  6.616680e-14  9.771086e-13  4.159936e-14  \n",
       "1  2.101587e-16  5.708225e-15  7.682672e-18  \n",
       "2  2.463017e-14  3.474023e-13  3.198720e-16  \n",
       "3  1.316249e-13  5.201666e-13  1.248111e-15  \n",
       "4  4.613249e-14  4.829071e-14  1.056205e-16  \n",
       "\n",
       "[5 rows x 57 columns]"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['source_node', 'destination_node', 'indicator_link',\n",
       "       'jaccard_followers', 'jaccard_followees', 'cosine_followers',\n",
       "       'cosine_followees', 'num_followers_s', 'num_followers_d',\n",
       "       'num_followees_s', 'num_followees_d', 'inter_followers',\n",
       "       'inter_followees', 'adar_index', 'follows_back', 'same_comp',\n",
       "       'shortest_path', 'weight_in', 'weight_out', 'weight_f1', 'weight_f2',\n",
       "       'weight_f3', 'weight_f4', 'page_rank_s', 'page_rank_d', 'katz_s',\n",
       "       'katz_d', 'hubs_s', 'hubs_d', 'authorities_s', 'authorities_d',\n",
       "       'prefer_Attach_followers', 'prefer_Attach_followees', 'svd_u_s_1',\n",
       "       'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6',\n",
       "       'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5',\n",
       "       'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4',\n",
       "       'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3',\n",
       "       'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Adding feature svd_dot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " svd_dot is Dot product between sourse node svd and destination node svd features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for train datasets\n",
    "s1,s2,s3,s4,s5,s6=df_final_train['svd_u_s_1'],df_final_train['svd_u_s_2'],df_final_train['svd_u_s_3'],df_final_train['svd_u_s_4'],df_final_train['svd_u_s_5'],df_final_train['svd_u_s_6']\n",
    "s7,s8,s9,s10,s11,s12=df_final_train['svd_v_s_1'],df_final_train['svd_v_s_2'],df_final_train['svd_v_s_3'],df_final_train['svd_v_s_4'],df_final_train['svd_v_s_5'],df_final_train['svd_v_s_6']\n",
    "\n",
    "d1,d2,d3,d4,d5,d6=df_final_train['svd_u_d_1'],df_final_train['svd_u_d_2'],df_final_train['svd_u_d_3'],df_final_train['svd_u_d_4'],df_final_train['svd_u_d_5'],df_final_train['svd_u_d_6']\n",
    "d7,d8,d9,d10,d11,d12=df_final_train['svd_v_d_1'],df_final_train['svd_v_d_2'],df_final_train['svd_v_d_3'],df_final_train['svd_v_d_4'],df_final_train['svd_v_d_5'],df_final_train['svd_v_d_6']\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "svd_dot=[]\n",
    "for i in range(len(np.array(s1))):\n",
    "    a=[]\n",
    "    b=[]\n",
    "    a.append(np.array(s1[i]))\n",
    "    a.append(np.array(s2[i]))\n",
    "    a.append(np.array(s3[i]))\n",
    "    a.append(np.array(s4[i]))\n",
    "    a.append(np.array(s5[i]))\n",
    "    a.append(np.array(s6[i]))\n",
    "    a.append(np.array(s7[i]))\n",
    "    a.append(np.array(s8[i]))\n",
    "    a.append(np.array(s9[i]))\n",
    "    a.append(np.array(s10[i]))\n",
    "    a.append(np.array(s11[i]))\n",
    "    a.append(np.array(s12[i]))\n",
    "    b.append(np.array(d1[i]))\n",
    "    b.append(np.array(d2[i]))\n",
    "    b.append(np.array(d3[i]))\n",
    "    b.append(np.array(d4[i]))\n",
    "    b.append(np.array(d5[i]))\n",
    "    b.append(np.array(d6[i]))\n",
    "    b.append(np.array(d7[i]))\n",
    "    b.append(np.array(d8[i]))\n",
    "    b.append(np.array(d9[i]))\n",
    "    b.append(np.array(d10[i]))\n",
    "    b.append(np.array(d11[i]))\n",
    "    b.append(np.array(d12[i]))\n",
    "    svd_dot.append(np.dot(a,b))\n",
    "df_final_train['svd_dot']=svd_dot    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>svd_v_s_4</th>\n",
       "      <th>svd_v_s_5</th>\n",
       "      <th>svd_v_s_6</th>\n",
       "      <th>svd_v_d_1</th>\n",
       "      <th>svd_v_d_2</th>\n",
       "      <th>svd_v_d_3</th>\n",
       "      <th>svd_v_d_4</th>\n",
       "      <th>svd_v_d_5</th>\n",
       "      <th>svd_v_d_6</th>\n",
       "      <th>svd_dot</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>273084</td>\n",
       "      <td>1505602</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "      <td>...</td>\n",
       "      <td>1.545085e-13</td>\n",
       "      <td>8.108376e-13</td>\n",
       "      <td>1.719695e-14</td>\n",
       "      <td>-1.355228e-12</td>\n",
       "      <td>4.675314e-13</td>\n",
       "      <td>1.128587e-06</td>\n",
       "      <td>6.616680e-14</td>\n",
       "      <td>9.771086e-13</td>\n",
       "      <td>4.159936e-14</td>\n",
       "      <td>1.338824e-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>350205</td>\n",
       "      <td>76813</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>1.676833e-14</td>\n",
       "      <td>1.369978e-13</td>\n",
       "      <td>2.538590e-14</td>\n",
       "      <td>-5.351140e-16</td>\n",
       "      <td>1.080238e-15</td>\n",
       "      <td>1.262047e-13</td>\n",
       "      <td>2.101587e-16</td>\n",
       "      <td>5.708225e-15</td>\n",
       "      <td>7.682672e-18</td>\n",
       "      <td>3.907535e-22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1200905</td>\n",
       "      <td>283891</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.052632</td>\n",
       "      <td>0.055556</td>\n",
       "      <td>0.109109</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>8.138929e-14</td>\n",
       "      <td>1.141195e-13</td>\n",
       "      <td>1.767060e-15</td>\n",
       "      <td>-1.988373e-13</td>\n",
       "      <td>4.622952e-12</td>\n",
       "      <td>4.031462e-11</td>\n",
       "      <td>2.463017e-14</td>\n",
       "      <td>3.474023e-13</td>\n",
       "      <td>3.198720e-16</td>\n",
       "      <td>1.223454e-20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>247831</td>\n",
       "      <td>1403584</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>...</td>\n",
       "      <td>5.069242e-12</td>\n",
       "      <td>1.558119e-12</td>\n",
       "      <td>1.171811e-13</td>\n",
       "      <td>-8.598428e-10</td>\n",
       "      <td>3.469093e-12</td>\n",
       "      <td>8.296850e-12</td>\n",
       "      <td>1.316249e-13</td>\n",
       "      <td>5.201666e-13</td>\n",
       "      <td>1.248111e-15</td>\n",
       "      <td>7.109963e-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233609</td>\n",
       "      <td>1837109</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>7.873057e-14</td>\n",
       "      <td>2.786845e-12</td>\n",
       "      <td>9.654727e-16</td>\n",
       "      <td>-2.265220e-15</td>\n",
       "      <td>9.810811e-14</td>\n",
       "      <td>3.119181e-13</td>\n",
       "      <td>4.613249e-14</td>\n",
       "      <td>4.829071e-14</td>\n",
       "      <td>1.056205e-16</td>\n",
       "      <td>7.312705e-24</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 58 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       273084           1505602               1                  0   \n",
       "1       350205             76813               1                  0   \n",
       "2      1200905            283891               1                  0   \n",
       "3       247831           1403584               1                  0   \n",
       "4       233609           1837109               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0           0.000000          0.000000          0.000000               11   \n",
       "1           0.000000          0.000000          0.000000                6   \n",
       "2           0.052632          0.055556          0.109109                9   \n",
       "3           0.000000          0.000000          0.000000               23   \n",
       "4           0.000000          0.000000          0.000000                3   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...     svd_v_s_4     svd_v_s_5  \\\n",
       "0                6               15  ...  1.545085e-13  8.108376e-13   \n",
       "1                3                8  ...  1.676833e-14  1.369978e-13   \n",
       "2               12                6  ...  8.138929e-14  1.141195e-13   \n",
       "3                6               14  ...  5.069242e-12  1.558119e-12   \n",
       "4                2                6  ...  7.873057e-14  2.786845e-12   \n",
       "\n",
       "      svd_v_s_6     svd_v_d_1     svd_v_d_2     svd_v_d_3     svd_v_d_4  \\\n",
       "0  1.719695e-14 -1.355228e-12  4.675314e-13  1.128587e-06  6.616680e-14   \n",
       "1  2.538590e-14 -5.351140e-16  1.080238e-15  1.262047e-13  2.101587e-16   \n",
       "2  1.767060e-15 -1.988373e-13  4.622952e-12  4.031462e-11  2.463017e-14   \n",
       "3  1.171811e-13 -8.598428e-10  3.469093e-12  8.296850e-12  1.316249e-13   \n",
       "4  9.654727e-16 -2.265220e-15  9.810811e-14  3.119181e-13  4.613249e-14   \n",
       "\n",
       "      svd_v_d_5     svd_v_d_6       svd_dot  \n",
       "0  9.771086e-13  4.159936e-14  1.338824e-11  \n",
       "1  5.708225e-15  7.682672e-18  3.907535e-22  \n",
       "2  3.474023e-13  3.198720e-16  1.223454e-20  \n",
       "3  5.201666e-13  1.248111e-15  7.109963e-18  \n",
       "4  4.829071e-14  1.056205e-16  7.312705e-24  \n",
       "\n",
       "[5 rows x 58 columns]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for test dataset\n",
    "s1,s2,s3,s4,s5,s6=df_final_test['svd_u_s_1'],df_final_test['svd_u_s_2'],df_final_test['svd_u_s_3'],df_final_test['svd_u_s_4'],df_final_test['svd_u_s_5'],df_final_test['svd_u_s_6']\n",
    "s7,s8,s9,s10,s11,s12=df_final_test['svd_v_s_1'],df_final_test['svd_v_s_2'],df_final_test['svd_v_s_3'],df_final_test['svd_v_s_4'],df_final_test['svd_v_s_5'],df_final_test['svd_v_s_6']\n",
    "\n",
    "d1,d2,d3,d4,d5,d6=df_final_test['svd_u_d_1'],df_final_test['svd_u_d_2'],df_final_test['svd_u_d_3'],df_final_test['svd_u_d_4'],df_final_test['svd_u_d_5'],df_final_test['svd_u_d_6']\n",
    "d7,d8,d9,d10,d11,d12=df_final_test['svd_v_d_1'],df_final_test['svd_v_d_2'],df_final_test['svd_v_d_3'],df_final_test['svd_v_d_4'],df_final_test['svd_v_d_5'],df_final_test['svd_v_d_6']\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "svd_dot=[]\n",
    "for i in range(len(np.array(s1))):\n",
    "    a=[]\n",
    "    b=[]\n",
    "    a.append(np.array(s1[i]))\n",
    "    a.append(np.array(s2[i]))\n",
    "    a.append(np.array(s3[i]))\n",
    "    a.append(np.array(s4[i]))\n",
    "    a.append(np.array(s5[i]))\n",
    "    a.append(np.array(s6[i]))\n",
    "    a.append(np.array(s7[i]))\n",
    "    a.append(np.array(s8[i]))\n",
    "    a.append(np.array(s9[i]))\n",
    "    a.append(np.array(s10[i]))\n",
    "    a.append(np.array(s11[i]))\n",
    "    a.append(np.array(s12[i]))\n",
    "    b.append(np.array(d1[i]))\n",
    "    b.append(np.array(d2[i]))\n",
    "    b.append(np.array(d3[i]))\n",
    "    b.append(np.array(d4[i]))\n",
    "    b.append(np.array(d5[i]))\n",
    "    b.append(np.array(d6[i]))\n",
    "    b.append(np.array(d7[i]))\n",
    "    b.append(np.array(d8[i]))\n",
    "    b.append(np.array(d9[i]))\n",
    "    b.append(np.array(d10[i]))\n",
    "    b.append(np.array(d11[i]))\n",
    "    b.append(np.array(d12[i]))\n",
    "    svd_dot.append(np.dot(a,b))\n",
    "df_final_test['svd_dot']=svd_dot    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_node</th>\n",
       "      <th>destination_node</th>\n",
       "      <th>indicator_link</th>\n",
       "      <th>jaccard_followers</th>\n",
       "      <th>jaccard_followees</th>\n",
       "      <th>cosine_followers</th>\n",
       "      <th>cosine_followees</th>\n",
       "      <th>num_followers_s</th>\n",
       "      <th>num_followers_d</th>\n",
       "      <th>num_followees_s</th>\n",
       "      <th>...</th>\n",
       "      <th>svd_v_s_4</th>\n",
       "      <th>svd_v_s_5</th>\n",
       "      <th>svd_v_s_6</th>\n",
       "      <th>svd_v_d_1</th>\n",
       "      <th>svd_v_d_2</th>\n",
       "      <th>svd_v_d_3</th>\n",
       "      <th>svd_v_d_4</th>\n",
       "      <th>svd_v_d_5</th>\n",
       "      <th>svd_v_d_6</th>\n",
       "      <th>svd_dot</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>848424</td>\n",
       "      <td>784690</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.029161</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>2.701546e-12</td>\n",
       "      <td>4.341594e-13</td>\n",
       "      <td>5.535503e-14</td>\n",
       "      <td>-9.993036e-10</td>\n",
       "      <td>5.791916e-10</td>\n",
       "      <td>3.512363e-07</td>\n",
       "      <td>2.486665e-09</td>\n",
       "      <td>2.771125e-09</td>\n",
       "      <td>1.727693e-12</td>\n",
       "      <td>2.083226e-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>264224</td>\n",
       "      <td>132395</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.353553</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>1.025729e-12</td>\n",
       "      <td>1.670536e-12</td>\n",
       "      <td>1.561495e-13</td>\n",
       "      <td>-1.682482e-12</td>\n",
       "      <td>2.274660e-13</td>\n",
       "      <td>8.221399e-11</td>\n",
       "      <td>4.182902e-13</td>\n",
       "      <td>1.365162e-12</td>\n",
       "      <td>8.359539e-14</td>\n",
       "      <td>1.243552e-20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>289059</td>\n",
       "      <td>253522</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>-2.576460e-16</td>\n",
       "      <td>1.520259e-15</td>\n",
       "      <td>8.810202e-15</td>\n",
       "      <td>1.032137e-16</td>\n",
       "      <td>1.667208e-16</td>\n",
       "      <td>2.255944e-18</td>\n",
       "      <td>0.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1749265</td>\n",
       "      <td>963357</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.1875</td>\n",
       "      <td>0.121212</td>\n",
       "      <td>0.316228</td>\n",
       "      <td>9</td>\n",
       "      <td>11</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>1.591708e-13</td>\n",
       "      <td>3.925224e-12</td>\n",
       "      <td>1.347642e-14</td>\n",
       "      <td>-2.213993e-12</td>\n",
       "      <td>1.413978e-11</td>\n",
       "      <td>1.288436e-09</td>\n",
       "      <td>1.646815e-11</td>\n",
       "      <td>6.239533e-12</td>\n",
       "      <td>1.943937e-14</td>\n",
       "      <td>1.014785e-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1199100</td>\n",
       "      <td>991335</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>...</td>\n",
       "      <td>5.890684e-12</td>\n",
       "      <td>9.854639e-12</td>\n",
       "      <td>8.426157e-13</td>\n",
       "      <td>-2.324512e-13</td>\n",
       "      <td>8.245808e-14</td>\n",
       "      <td>1.331022e-07</td>\n",
       "      <td>1.400868e-14</td>\n",
       "      <td>1.611387e-13</td>\n",
       "      <td>2.610179e-14</td>\n",
       "      <td>9.322263e-11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 58 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   source_node  destination_node  indicator_link  jaccard_followers  \\\n",
       "0       848424            784690               1                  0   \n",
       "1       264224            132395               1                  0   \n",
       "2       289059            253522               1                  0   \n",
       "3      1749265            963357               1                  0   \n",
       "4      1199100            991335               1                  0   \n",
       "\n",
       "   jaccard_followees  cosine_followers  cosine_followees  num_followers_s  \\\n",
       "0             0.0000          0.029161          0.000000                6   \n",
       "1             0.4000          0.353553          0.571429                8   \n",
       "2             0.0000          0.000000          0.000000                0   \n",
       "3             0.1875          0.121212          0.316228                9   \n",
       "4             0.0000          0.000000          0.000000               17   \n",
       "\n",
       "   num_followers_d  num_followees_s  ...     svd_v_s_4     svd_v_s_5  \\\n",
       "0               14                6  ...  2.701546e-12  4.341594e-13   \n",
       "1                3                7  ...  1.025729e-12  1.670536e-12   \n",
       "2                5                0  ...  0.000000e+00  0.000000e+00   \n",
       "3               11                9  ...  1.591708e-13  3.925224e-12   \n",
       "4                1               16  ...  5.890684e-12  9.854639e-12   \n",
       "\n",
       "      svd_v_s_6     svd_v_d_1     svd_v_d_2     svd_v_d_3     svd_v_d_4  \\\n",
       "0  5.535503e-14 -9.993036e-10  5.791916e-10  3.512363e-07  2.486665e-09   \n",
       "1  1.561495e-13 -1.682482e-12  2.274660e-13  8.221399e-11  4.182902e-13   \n",
       "2  0.000000e+00 -2.576460e-16  1.520259e-15  8.810202e-15  1.032137e-16   \n",
       "3  1.347642e-14 -2.213993e-12  1.413978e-11  1.288436e-09  1.646815e-11   \n",
       "4  8.426157e-13 -2.324512e-13  8.245808e-14  1.331022e-07  1.400868e-14   \n",
       "\n",
       "      svd_v_d_5     svd_v_d_6       svd_dot  \n",
       "0  2.771125e-09  1.727693e-12  2.083226e-17  \n",
       "1  1.365162e-12  8.359539e-14  1.243552e-20  \n",
       "2  1.667208e-16  2.255944e-18  0.000000e+00  \n",
       "3  6.239533e-12  1.943937e-14  1.014785e-18  \n",
       "4  1.611387e-13  2.610179e-14  9.322263e-11  \n",
       "\n",
       "[5 rows x 58 columns]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "hdf = HDFStore('storage_sample_stage4.h5')\n",
    "hdf.put('train_df',df_final_train, format='table', data_columns=True)\n",
    "hdf.put('test_df',df_final_test, format='table', data_columns=True)\n",
    "hdf.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Importing Libraries\n",
    "# please do go through this python notebook: \n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "import csv\n",
    "import pandas as pd#pandas to create small dataframes \n",
    "import datetime #Convert to unix time\n",
    "import time #Convert to unix time\n",
    "# if numpy is not installed already : pip3 install numpy\n",
    "import numpy as np#Do aritmetic operations on arrays\n",
    "# matplotlib: used to plot graphs\n",
    "import matplotlib\n",
    "import matplotlib.pylab as plt\n",
    "import seaborn as sns#Plots\n",
    "from matplotlib import rcParams#Size of plots  \n",
    "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n",
    "import math\n",
    "import pickle\n",
    "import os\n",
    "# to install xgboost: pip3 install xgboost\n",
    "import xgboost as xgb\n",
    "\n",
    "import warnings\n",
    "import networkx as nx\n",
    "import pdb\n",
    "import pickle\n",
    "from pandas import HDFStore,DataFrame\n",
    "from pandas import read_hdf\n",
    "from scipy.sparse.linalg import svds, eigs\n",
    "import gc\n",
    "from tqdm import tqdm\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import f1_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['source_node', 'destination_node', 'indicator_link',\n",
       "       'jaccard_followers', 'jaccard_followees', 'cosine_followers',\n",
       "       'cosine_followees', 'num_followers_s', 'num_followers_d',\n",
       "       'num_followees_s', 'num_followees_d', 'inter_followers',\n",
       "       'inter_followees', 'adar_index', 'follows_back', 'same_comp',\n",
       "       'shortest_path', 'weight_in', 'weight_out', 'weight_f1', 'weight_f2',\n",
       "       'weight_f3', 'weight_f4', 'page_rank_s', 'page_rank_d', 'katz_s',\n",
       "       'katz_d', 'hubs_s', 'hubs_d', 'authorities_s', 'authorities_d',\n",
       "       'prefer_Attach_followers', 'prefer_Attach_followees', 'svd_u_s_1',\n",
       "       'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6',\n",
       "       'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5',\n",
       "       'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4',\n",
       "       'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3',\n",
       "       'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6', 'svd_dot'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_final_train.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = df_final_train.indicator_link\n",
    "y_test = df_final_test.indicator_link"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_final_train.drop(['source_node', 'destination_node','indicator_link'],axis=1,inplace=True)\n",
    "df_final_test.drop(['source_node', 'destination_node','indicator_link'],axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimators =  10 Train Score 0.9098260968992651 test Score 0.9027976742226341\n",
      "Estimators =  50 Train Score 0.9193635607321131 test Score 0.8992469654628069\n",
      "Estimators =  100 Train Score 0.9213647068631332 test Score 0.9123853017040889\n",
      "Estimators =  250 Train Score 0.922151931824123 test Score 0.9169170863842214\n",
      "Estimators =  450 Train Score 0.9222848891353711 test Score 0.9143039049235995\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Estimators vs score at depth of 5')"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "estimators = [10,50,100,250,450]\n",
    "train_scores = []\n",
    "test_scores = []\n",
    "for i in estimators:\n",
    "    clf = RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
    "            max_depth=5, max_features='auto', max_leaf_nodes=None,\n",
    "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
    "            min_samples_leaf=52, min_samples_split=120,\n",
    "            min_weight_fraction_leaf=0.0, n_estimators=i, n_jobs=-1,random_state=25,verbose=0,warm_start=False)\n",
    "    clf.fit(df_final_train,y_train)\n",
    "    train_sc = f1_score(y_train,clf.predict(df_final_train))\n",
    "    test_sc = f1_score(y_test,clf.predict(df_final_test))\n",
    "    test_scores.append(test_sc)\n",
    "    train_scores.append(train_sc)\n",
    "    print('Estimators = ',i,'Train Score',train_sc,'test Score',test_sc)\n",
    "plt.plot(estimators,train_scores,label='Train Score')\n",
    "plt.plot(estimators,test_scores,label='Test Score')\n",
    "plt.xlabel('Estimators')\n",
    "plt.ylabel('Score')\n",
    "plt.title('Estimators vs score at depth of 5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "depth =  3 Train Score 0.8810698327858115 test Score 0.8568133350742045\n",
      "depth =  9 Train Score 0.9577372747230306 test Score 0.9214581783398874\n",
      "depth =  11 Train Score 0.9619094028547643 test Score 0.9109016920111374\n",
      "depth =  15 Train Score 0.9638184936720423 test Score 0.9198179420647412\n",
      "depth =  20 Train Score 0.9645779882568882 test Score 0.921292953319458\n",
      "depth =  35 Train Score 0.9648535734566399 test Score 0.9213712246718492\n",
      "depth =  50 Train Score 0.9648535734566399 test Score 0.9213712246718492\n",
      "depth =  70 Train Score 0.9648535734566399 test Score 0.9213712246718492\n",
      "depth =  130 Train Score 0.9648535734566399 test Score 0.9213712246718492\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "depths = [3,9,11,15,20,35,50,70,130]\n",
    "train_scores = []\n",
    "test_scores = []\n",
    "for i in depths:\n",
    "    clf = RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
    "            max_depth=i, max_features='auto', max_leaf_nodes=None,\n",
    "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
    "            min_samples_leaf=52, min_samples_split=120,\n",
    "            min_weight_fraction_leaf=0.0, n_estimators=115, n_jobs=-1,random_state=25,verbose=0,warm_start=False)\n",
    "    clf.fit(df_final_train,y_train)\n",
    "    train_sc = f1_score(y_train,clf.predict(df_final_train))\n",
    "    test_sc = f1_score(y_test,clf.predict(df_final_test))\n",
    "    test_scores.append(test_sc)\n",
    "    train_scores.append(train_sc)\n",
    "    print('depth = ',i,'Train Score',train_sc,'test Score',test_sc)\n",
    "plt.plot(depths,train_scores,label='Train Score')\n",
    "plt.plot(depths,test_scores,label='Test Score')\n",
    "plt.xlabel('Depth')\n",
    "plt.ylabel('Score')\n",
    "plt.title('Depth vs score at depth of 5 at estimators = 115')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean test scores [0.96268665 0.9623128  0.96125205 0.96238543 0.96369861]\n",
      "mean train scores [0.96356236 0.96323862 0.96180049 0.96303285 0.96482231]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import f1_score\n",
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "from scipy.stats import randint as sp_randint\n",
    "from scipy.stats import uniform\n",
    "\n",
    "param_dist = {\"n_estimators\":sp_randint(105,125),\n",
    "              \"max_depth\": sp_randint(10,15),\n",
    "              \"min_samples_split\": sp_randint(110,190),\n",
    "              \"min_samples_leaf\": sp_randint(25,65)}\n",
    "\n",
    "clf = RandomForestClassifier(random_state=25,n_jobs=-1)\n",
    "\n",
    "rf_random = RandomizedSearchCV(clf, param_distributions=param_dist,\n",
    "                                   n_iter=5,cv=10,scoring='f1',random_state=25)\n",
    "\n",
    "rf_random.fit(df_final_train,y_train)\n",
    "print('mean test scores',rf_random.cv_results_['mean_test_score'])\n",
    "print('mean train scores',rf_random.cv_results_['mean_train_score'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
      "            max_depth=14, max_features='auto', max_leaf_nodes=None,\n",
      "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
      "            min_samples_leaf=28, min_samples_split=111,\n",
      "            min_weight_fraction_leaf=0.0, n_estimators=121, n_jobs=-1,\n",
      "            oob_score=False, random_state=25, verbose=0, warm_start=False)\n"
     ]
    }
   ],
   "source": [
    "print(rf_random.best_estimator_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf=RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
    "            max_depth=14, max_features='auto', max_leaf_nodes=None,\n",
    "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
    "            min_samples_leaf=28, min_samples_split=111,\n",
    "            min_weight_fraction_leaf=0.0, n_estimators=121, n_jobs=-1,\n",
    "            oob_score=False, random_state=25, verbose=0, warm_start=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf.fit(df_final_train,y_train)\n",
    "y_train_pred = clf.predict(df_final_train)\n",
    "y_test_pred = clf.predict(df_final_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train f1 score 0.9648075109754738\n",
      "Test f1 score 0.9213158621275512\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "print('Train f1 score',f1_score(y_train,y_train_pred))\n",
    "print('Test f1 score',f1_score(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "def plot_confusion_matrix(test_y, predict_y):\n",
    "    C = confusion_matrix(test_y, predict_y)\n",
    "    \n",
    "    A =(((C.T)/(C.sum(axis=1))).T)\n",
    "    \n",
    "    B =(C/C.sum(axis=0))\n",
    "    plt.figure(figsize=(20,4))\n",
    "    \n",
    "    labels = [0,1]\n",
    "    # representing A in heatmap format\n",
    "    cmap=sns.light_palette(\"blue\")\n",
    "    plt.subplot(1, 3, 1)\n",
    "    sns.heatmap(C, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Confusion matrix\")\n",
    "    \n",
    "    plt.subplot(1, 3, 2)\n",
    "    sns.heatmap(B, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Precision matrix\")\n",
    "    \n",
    "    plt.subplot(1, 3, 3)\n",
    "    # representing B in heatmap format\n",
    "    sns.heatmap(A, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Recall matrix\")\n",
    "    \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train confusion_matrix\n"
     ]
    },
    {
     "data": {
      "image/png": "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wqNc62PKszUl9xGvwspFRERERETy0EgeEZEScvcb3L2pu+9HmDh5MmHOnNpmdlBU7VRyJ2UeB/SPlnsCk93do/Je0du3WgAtgRnATKClmbUws2rROcal4NJERERERKQS0kgeEZEyFM218wfgP2a2A9gAXBhtHgE8bWZLCCN4ekX7zDezF4AFwHbgYnfPAjCzS4AJQAYw0t3np/SCRERERESk0rBwE7niMdO8ExIsW1beLZCKpHHjuPPUFNvO9C3upTuXJJfihGRTnJBYihOSTXFCsilOSKx0jxN6XEtEREREREREJA0oySMiIiIiIiIikgaU5BERERERERERSQNK8oiIiIiIiIiIpAEleURERERERERE0oCSPCIiIiIiIiIiaUBJHhERERERERGRNKAkj4iIiIiIiIhIGlCSR0REREREREQkDSjJIyIiIiIiIiKSBpTkERERERERERFJA0ryiIiIiIiIiIikASV5RERERERERETSgJI8IiIiIiIiIiJpQEkeEREREREREZE0oCSPiIiIiIiIiEgaUJJHRERERERERCQNKMkjIiIiIiIiIpIGlOQREREREREREUkDSvKIiIiIiIiIiKQBJXlERERERERERNKAkjwiIiIiIiIiImlASR4RERERERERkTSgJI+IiIiIiIiISBpQkkdEREREREREJA0oySMiIiIiIiIikgaqlncDRERS6cgjy7sFIiJSkSlOiIhIIhU9Tmgkj4hIKZlZhpnNMbM3ovUWZvaxmS02s+fNrFpUvnu0viTavl/MMW6IyheZWZeY8q5R2RIzuz7V1yYiIqVTVD9uZvua2btRHJlnZqeXRztFRCT1khEjlOQRESm9y4EvYtbvBh5w95bABmBQVD4I2ODuBwIPRPUws1ZAL+AwoCvwaJQ4ygAeAboBrYDeUV0REakEitmP/w14wd3bEGLBo6ltpYiIlIdkxQgleURESsHMmgLdgSeidQM6Ay9FVUYBZ0fLPaJ1ou0nR/V7AGPdfYu7fwMsAdpHnyXu/rW7bwXGRnVFRKRyKE4/7kCtaLk2sDyF7RMRkfKTlBihJI+ISCHMbIiZzYr5DIlT7UHgWmBHtF4P+N7dt0frmUCTaLkJ8B1AtH1jVD+nPN8+hZWLiEgFUIw4UZx+/Bagr5llAuOBS5PWYBERSaki4kRSYoQmXhYRKYS7DweGF7bd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LZqZVSEMp2xCGBeWCcx096zi7V85Mu+dOoVhkWeeGSYpGzo0zNOzYQNceGG4o3ruuWFme/cwVP7ii2Hr1jDL/eOPh/pVqoTh9dkd8bZt8O23odMFePlluO02aNsW/vQn+MMfQvnAgSHpBPD3v8NTT4Xltm3Dco0aIVN/6aWhfK+94IUXwrD+//0PzjsvtLUiW7asvFuwc2677Uo+/XQGGzduoG7degwYcCnHH38Kt956BatXr6Bhw3245ZaHqFWrDvfe+1emTp3I3ns3BsIjWo8//jJffbWQu+66nh07stixwznppK70738JACNHPsTBBx9Ox44ns3XrFu644xoWL/6CWrVqc+OND9C4cbjFM2bMMN566z9kZGRw8cV/4ZhjwisUpk+fwiOP3MGOHVl063YuffteVD5/qBJq3DjODNQ7oXXr4vctc+eW7lyS2K4SJ3ZGt24hFmRkhHhwxx1w660waxa8/nrZxpN0UtniRHHE66uL0/8//fSjPPvscJo0aZ5zrHvvHUnduvV47LF7mDTpjZyRpd27n8eAAZeW41Umh+JE+lCcKKikcaJKlfDY7oknhm1vvw1XXRWOWdjvhnSiOFG8OLFo0WfcddcNbN36C+3bn8hll92Ylo9spXucSFqSp7TSsVOWkknHTllKLt07ZSk+xQnJpjghsRQnJJvihGRTnJBY6R4nkvYKdRERERERERERSR0leURERERERERE0oCSPCIiIiIiIiIiaUBJHhERERERERGRNKAkj4iIiIiIiIhIGlCSR0REREREREQkDSjJIyIiIiIiIiKSBpTkERERERERERFJA0ryiIiIiIiIiIikASV5RERERERERETSgJI8IiIiIiIiIiJpQEkeEREREREREZE0oCSPiIiIiIiIiEgaqFreDRARSaUjjyzvFoiISEWmOCEiIolU9DihkTwiIiVkZtXNbIaZzTWz+WZ2a1T+jJktMrPPzWykme0WlZuZPWxmS8xsnpkdHXOs/ma2OPr0jylva2afRfs8bGaW+isVEREREZHKQEkeEZGS2wJ0dvfWwFFAVzM7FngGOAQ4AqgBDI7qdwNaRp8hwDAAM9sLuBk4BmgP3GxmdaN9hkV1s/frmvzLEhERERGRyqjIJI+Z7WFmVaLlg8zsrOy70iIiuzIPfohWd4s+7u7jo20OzACaRnV6AKOjTdOBOma2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\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test confusion_matrix\n"
     ]
    },
    {
     "data": {
      "image/png": "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AFh11dUBmDx5Ev36rUe/fuuw7LI9GDhwD+6//65F1r///gkMGrQ3ADvuOIjHHnuAlBL3338XAwfuQY8ePVhrrXXo1289Jk+eVPF21TYzZ+YsOMDs2fDMM/mK6uTJeeRMU7vumkfbTJqUv7/xBnz4IXz0o7n+a6/l8r/8pXHUzn/+A3//e67XkjXXhJ494cEH8/drroG99sqfhwyBq6/On6++euHya67Jnx96KI/wWXPNtv07SFoylfTVa665Nh/72EYs08yltS23/Cwf+ciKi5TPnz+fX/3qp3zjG8dXre1qX1tvDVOmwPPP54sAY8Y0jsZpsPHGOWkPeSRP0+WQR5TedlsezSOp61uSOLHOOhuw9trrA9C7d19WWWU13npr4TsN3n13No8//iCf+9wXq7ofWnKVxImU8rkBQK9e8NJLi27nwAPhN79p/P7OO/m9e3fo0SNvQ12PSZ52Mn/+fEaMGMLee2/Hlltux8YbtzwGetq0F3jnnVkcc8whjBy5D+PH/xGA1157mTXWaDzD7tOnL6+99vIi6+d6awHQrVt3VlppZWbNerPF9SvdrpbceuvlrPhDD7Vc5+Mfzx3m7bfnW7COL867pkyBjTbK2+jWLSdi1lmn8t/u3x+mNd65x7RpjcP3+/bNySjI72us0bjO1KnNryOptqrVV99883Vst93OrL76Gku8LdVGJX3zk082XgjYe+98IL/aagvXOeCAhQ/eAX7yk7zu+efnA3hJXUd7xYlnnpnEvHlz6ddv3YXK77vvL2yxxWdZccWVlritqq5K4sSPfgQHH5zrjRsH3/72otvZf/9F48Ttt8Mrr+SEz+9+1+5NVw3UPMkTEYeXWTYyIiZGxMTrruta88Z069aNyy67hd/+9h4mT57E8883M4SjMH/+fP71r6c466xLOffcy7j22l8yderzpGZSpRGxSFlz9SAWq7y57WrJrLgi/P73cMwxjVnw5nTvDp/7HAwdmt/33jsPqX/rLTjiCLjxRrjvvjx0ct68yn+/uf+krWXf27KOVG31GidaU42++rXXXuaee25nn30Obr2yOo1K+ubjjoMdd8xzLey4Yz7AL40Za66Z538bP76x7MQT88WE//mfnBBqbg4HqSswTjRa3Djx+uuvcNZZx3PCCWctMtpnwoQ/M3DgHkvURtVGJXHiwAPhqqvyRePdd4drr114va23zrf0PvXUwusNHgxrrZXnDG2YOkJdS/cO+M3TgCubW5BSGg2MBnjpJbrkqeZKK/XkM5/Zhocfvo8NNvh4s3X69FmTXr1WZYUVPsIKK3yEzTbbin//ezJ9+qzJK6/MXFDv1VdfbvbKa643gz591mT+/HnMnv0OPXuu0uz6vXvn9SvZrtque/ec4Ln+erj55vJ1p02De+6B11/P38eNy/fKTpgAf/5zfgF8/et5IrRKTZuWJ4FusPbajcMyX345H/DPnJnfX3mlcZ3S0UKl60gdqK7jREsqjQGL49lnn2H69BcZOjTPr/DBB+8xdOguXH/9nUu0XVVXJX3zjBmNI3lWXDF/nlUy7dJXv5rjUWnip2FE55w5eRLm446rTvulGjBOsPhx4r//nc2JJ36Dr33tGDbe+DMLLXv77TeZPPnvnHHGxe3WXlVPJXFi+PDG+TkffBCWXx5694ZXX81lzY32bPDBBzB2bL4F7C9/af/2q7qqMpInIia18Po70Lcav9mR3nrrjQUTl33wwfs8+uj/se66H22x/vbb78ykSROZP38e77//Hs88M4n11vsYG220KdOnv8CMGVOZO3cOEybcynbbLZo+3W67gYwfnzMJ99wzns0335aIYLvtBjJhwq3MmTOHGTOmMn36C2y00WYVb1dtd/nleS6eCy5ove748bDZZrDCCvm2rB13zE/mgjzBGeS5cb71LbjsssrbMHNmHkG0zTb5+7BhcMst+fPYsXDoofnzoYcuXD5sWP68zTbw9tuNJwFSNS1tcaIS1eirP/vZnfjDH+5nzJgJjBkzgeWWW8EETxfwyCN5Qvz114dll80H4mPHLlxn9dUbr8ieeCJcccXCy5vOswALz7m21175AQFSZ2WcWNSSxIm5c+dw8slHsuuuQ9hpp90WWX7PPbez7bY70aPHcu3dbFVBJXHixRfzA10gj+JcfvnGBE9EnlR5zJjG+iuu2BgnunXLo38mT676rqgKqjWSpy8wCHizSXkA/1el3+wwr7/+CmefPYoPP5zPhx8mdtppMJ/97Bf4/e+vYcyYy3jjjdcYPvzLbLPNjhx//E9Yb72PsfXWOzB8+JeJWIY99th3waifo48+he9/fwQffjif3Xb7ChtsMACAK664kE98YhO2335n9thjX84883iGDt2Fnj17cfLJObOwwQYD+MIXduPww3en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\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('Train confusion_matrix')\n",
    "plot_confusion_matrix(y_train,y_train_pred)\n",
    "print('Test confusion_matrix')\n",
    "plot_confusion_matrix(y_test,y_test_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_curve, auc\n",
    "fpr,tpr,ths = roc_curve(y_test,y_test_pred)\n",
    "auc_sc = auc(fpr, tpr)\n",
    "plt.plot(fpr, tpr, color='navy',label='ROC curve (area = %0.2f)' % auc_sc)\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver operating characteristic with test data')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "features = df_final_train.columns\n",
    "importances = clf.feature_importances_\n",
    "indices = (np.argsort(importances))[-25:]\n",
    "plt.figure(figsize=(10,12))\n",
    "plt.title('Feature Importances')\n",
    "plt.barh(range(len(indices)), importances[indices], color='r', align='center')\n",
    "plt.yticks(range(len(indices)), [features[i] for i in indices])\n",
    "plt.xlabel('Relative Importance')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Applying XGBOOST "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean test scores [0.98005894 0.97996695 0.98052121 0.98036789 0.9804788 ]\n",
      "mean train scores [0.99999001 0.999995   0.99549319 0.99751603 0.99782201]\n"
     ]
    }
   ],
   "source": [
    "import xgboost as xgb\n",
    "clf = xgb.XGBClassifier()\n",
    "param_dist = {\"n_estimators\":sp_randint(105,125),\n",
    "              \"max_depth\": sp_randint(10,15)\n",
    "              }\n",
    "model = RandomizedSearchCV(clf, param_distributions=param_dist,\n",
    "                                   n_iter=5,cv=3,scoring='f1',random_state=25)\n",
    "\n",
    "\n",
    "model.fit(df_final_train,y_train)\n",
    "print('mean test scores',model.cv_results_['mean_test_score'])\n",
    "print('mean train scores',model.cv_results_['mean_train_score'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
      "       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
      "       max_depth=10, min_child_weight=1, missing=None, n_estimators=109,\n",
      "       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,\n",
      "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n",
      "       silent=True, subsample=1)\n"
     ]
    }
   ],
   "source": [
    "print(model.best_estimator_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf=xgb.XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
    "       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=10, min_child_weight=1, missing=None, n_estimators=109,\n",
    "       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n",
    "       silent=True, subsample=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf.fit(df_final_train,y_train)\n",
    "y_train_pred = clf.predict(df_final_train)\n",
    "y_test_pred = clf.predict(df_final_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train f1 score 0.9924091812759805\n",
      "Test f1 score 0.9262852634496876\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "print('Train f1 score',f1_score(y_train,y_train_pred))\n",
    "print('Test f1 score',f1_score(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train confusion_matrix\n"
     ]
    },
    {
     "data": {
      "image/png": "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37RY16CU0uiU0udSSp+DURVq2qrbay845JA8VPKGG/LJ9NVX5yupe++d73OdOHHZrVsjRiy7t/Wll/J22xaDODp3httvh//5n5wcKrXRRnlY5u23N9yOadOWz8D37p2v1E6blpfrl0Mevr9JkbjdZJOcrFL1zJjxGrNmTeO44w5lyJD+vPHGLEaN+nfmzn2DsWP/xBe+cAARQa9eW7Dppr157bWXl9u+e/dNeOONWUvfv/HGrKWjdzbaqOvS27DmzJnNhhtutHSb2bOXbfPmm7Po1s0hXGpxNR0nVkZjfXqpmTPzFdpddoHvfS+XzZ+fr74+8AAsXJhfY8fC7rvnCwsALxddyY03wp57Vv5YtOrq991vvPH60v5++TozAViyZDELFrxDly4bNLht/X5/vfW6sPPOuy2dcFNqhYwT9axKnAD48Y9z0v+AA3LCqO67CjT9vUOtizFC5VQqyfMtYEJEjI2I0cXrr8AEYMUhDG3Md7+bO9ittsqjd+66C44+etl8Op065dnuf/3r/P611+CLX8zLPXrAZz6TT7g7dsyz1191Fdx004qfc8QRcNttea6fhowblzvpDTbIrwMOyGWzZuWRRLvtlusNGwa33JKXb7112YTQxxyzrFzV8clPfoY///l+brjhLm644S66d9+E0aP/xEYbdWfjjTflscfuB2Du3DeZOvVf9OzZe7ntu3btwSc+sS6TJz9OSonx429mr73yH9eee/Zn3Lh8E/W4cTez557LysePv5mUEpMnP86663ZeIQhILaCm48TKePjhPFH+llvm+DBkSO6zS3XtuuxK7hlnwOWX5+XXXls20XKHDnn52WfzU1L69IFu3XK9/fdf9sAAtW7bbrsD06e/wsyZU1m06EPuuut29tyz/3J1cr+fH4Nzzz3j6Nt3dyKCPffsz1133c6HH37IzJlTmT79FbbddkfeemsuCxbkb3sffPA+jz56H5tv/smqH5vUTMaJelYlTrRrlxM5kB8Ss+OO+Um7dZr63qHWxRihcjo0XeXjSyn9NSI+TR5O2Ys8/msa8HBKaUklPrM1OOUUOPjg3IleemmeHwHg3HPzI9WffDJ3uqedBnPmwNCheeRP167LHqs+fHi+ZxZyx33eect/xq67wte+Bl/9ap5w+dxzc4cPeQb9efPy8vHH589cZ518RXfs2Fx+3nn5Su7IkflL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/gWOPfYQTjjhe7Rrt/w/y5tvvk737pssfd+9+ya8+WbufBvb75tvvk6PHsu26dZt2TZa/S68EE49FT76KL9/883cYe66a35/+OGw2WZ5uWdPGDwYfv3r5u273L5K9eoFU6cuez9tWi7r1Ssv1y8H2HhjmDUrL8+aBT16NK9Nkla/+v129+4br9Bv5zqbAtC+fQfWW68z8+fPa9b+FyyYz/33380uu+yx+hqtimisPy/1xBPLEv6DB+eT8Y02yuUHHgjrrJMvEuy334oxY/DgfOJf/6KCpNbNOKE6qxInHnggJ31mzsyvcePybV+LF8Pxx+dbfWfMyEmiyy6r3jFp9al6kiciRpRZNyoiHomIR665ZsV7TNuCJUsW88ILkznkkCP57W9vZu211+H66xs/locfvpett96Om276B2PG3MzFF5/DwoULlqtTN/9OqYgo246GtoHy22jlDBqUR+Q89tjy5UOGwAUXwIMP5hPpxYtz+YUX5vtm6xJCzdHYvko19CeRUuPlUmtV63GiMc3p61e2b1+yZDHnnvsd/v3fj6ZnzwayxGpVmtNvn3xyHl7/2GP557RpOTbceSfccQfcdx9cf32+Lat+zDjyyLxOaquME8sYJ9ZMqxInPvWpfGtX7945MdS/P3zhC9ChQ07y9O2bL0o/+SSccUZ1jkerV4emq6x2ZwO/a2hFSmk0MBpgxgza5NfQ7t03oXv3TejTZycA9tlnINddN5qNNurKnDmz6dq1B3PmzGbDDTcCYOzYP/Gf/zmKiKBXry3YdNPevPbay2y33Y7L7fONN2Ytff/GG7OWjt5pbL/du2/C7NnLtnnzzVl06+YwjUrYay845JA8D8Laa+cs+dVX57l19t4719l//zzvDeQJl2+4IS9365a3W7wYbrml8c944IGG91Vq2jTYd99l73v3hr//PZf37r18ed3Qy9dfz7dzzZqVf9a/fUxqITUdJxpTv99+443Xl/b1y9eZSffum7BkyWIWLHiHLl2anjH95z//Pr16bcnhhw9f3c1WBUybtvzom9J+u87Mmcuu0K67bl6ePz+///GP8wvg2muX3e4L+Spuv375qq7UhhknME6syVYlTowalb9bLFyY140dC7vvDu+9l9+//HL+eeONztfZVlVkJE9EPNnI6ylg40p8Zmux0Ubd6dFjE157Lf/veOyx+9lyy0+x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\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test confusion_matrix\n"
     ]
    },
    {
     "data": {
      "image/png": "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v2fH8MorOdsNuXN86qkFmfJzz4WjjsojeeqlBCutlN936wZvvpkTRc88A88W/z9Onw6vvQZrrNHydgwZAhMnwltvwcyZ+f0uu8Baa+XRQ/fem+tdcQXstVd+v+eeMGZMfj9mzIJyta6IoGvXFQGYN28edXXzgGDrrbcnIogI+vbtz4wZrwLwt7/9he2224mePXsBNHrxnVLi4YfvZfvthwAwZMje3H33JADuued2hgzZG4Dttx/CQw/9i5QS99wzicGDd6dLly6svfY69Oq1HpMnP1bp05eaVetxYlENHJjjwQsvwNy5cN11ub8ulVLu2yHfEJg2bUH5iivmJE7XrjBnDsyalbd17pzLOnWCFVZYsI/ar8mTH6NXr/Xo1Wsdll22C4MH784990xaqE5TfX7XriuwySZb0qWLQ7bU8RknFtaSONGvX76JC3kkT/32lGD55aFLl3xTYNll4dVXF953ww1hzTXhHw76bvcqFSdWXLEbAHV184rZBk09X0TtWUWSPBFxNHAd+a/ifvJjgQO4NiJqbtzIeuvlzPd998GXvwxTp+Yh86V+85ucaZ82LQ+Z/+EPF04CQc6od+kCzz23oOyXv8wjeM45J29rqHdvePnlBb9PmZLLevfO7xuWA/TsmZNUkH+uuebin7vKq6ur45BD9mTvvQexxRaD6NdvwZy7efPmMnHizQwcuB0AU6a8yDvvzOKIIw5k5MivMmHCnz92vFmz3qJbt+506pQfjLfGGmvx+us5Qr/++qusuebaAHTq1Jlu3VZi1qy3ivK15h9jjTV6zt9HaitLW5xoiab681InnggHHJDrjR8P3/9+Lv/jH+Hdd/PNgpdeyndy33orx5yzz85l06fD22/nmwFq31rSbzfV5zfnzDOP45BD9uSKKy4kNbwQkdoR48THtSROPPoofO1r+f3ee+cbA6utlm/83nFHjgXTp8OECXnaV6n994c//KGy56DWUck4ceSRI9h770F07bri/BvL6lgqNZJnBPC5lNIZKaWritcZwMBiW6MiYmREPBgRD8LH5xW2RyuuCDfemNc8mDcPfvYz+MUvPl5vyJC8Hk+vXnnK1m9+s2BkD+SRN1deCQcfvCD5c+yx0LdvTv6stlrj826jkeRqSk2Xq7o6derEqFE3c8MNdzJ58mO88MLT87edd95J9O+/Jf37bwnkhNDTTz/B6adfzFlnjeLKKy/i5ZdfWOh4jf03jOI/duMX69FkudTGlpo40VIt6bf33z+vvbPOOrDbbjluROS7u3V1OcZssEGeTrzBBnn67p575ve9euWYNXRoVU5HS6Cxfjsa/IEsTt/+s5+dzejRf+GCC67m8cf/zW233bwkzZQqzTjRQEvixE9/mqdhPfRQ/jllSv6O8slP5hvOffrkxNDgwbDddgvvu99+cO21lWu/Wk+l4gTAWWddyo033s3cuXN4+OF7F7eJakOVSvJ8BPRqpHztYlujUkqXpJS2TCltCSMr1LTW07lzTvBcfTXcdFPuPDfYIGfQX3ghd6IPPZRHzhx88IL5rc89l7f37Zt/X2klGDcur7Vw330Ljl8/2mbOnLwI88CBH2/DlCn5Yr9enz75zu2UKfl9w3LIQzPXKhK/a62Vp4ipsrp1685mm201f9HjMWN+w8yZb/K97x07v84aa6zFwIHb0bXrCqy88mr0778lzz238C2WlVdeldmzZxVTv2DGjFdYffU15+//2mvTgTzEcvbsd+jefZWi/JX5x5gx41V69HD4ltrcUhEnFkVT/XmpESPymjyQ78ouvzz06AHf/Cbcemu+kJ8xA+65J6/D86Uv5Xjz+ut525/+BIMGVe+ctHga67fr+/qF63y8zy9/3J4ArLBCN3bccQ+n7qq9M0400JI4MX16Hsmz+eb55jPk6bt7753jxrvv5tctt+R1Rev175+/2zz0UOXPQ0uuUnGiXpcuyzFo0OCPTQFTx1CpJM8RwKSIuCUiLiletwKTgB9W6DOr7tJL81o89SvQ/+c/OaGzwQb5NWVK7mBffTUPld9xx1xvzTXh05/OT85adtmcILriijzcvtRaC0bgsdde+fgNTZgAO++c79auskp+P2FCThC9805ekBny4s43Fzfsxo6F4cPz++HDF5Srdc2c+SazZ+dFMT788AP+/e9/su66n2DcuBt44IG7Of74c1hmmQX/C2677Y489tiD1NXN44MP3ueppx5jvfU+udAxI4IBA7bizjsnADBhwk1su+1gAAYNGsyECTcBcOedExgwYGsigkGDBnP77eOYM2cO06e/zNSpL9K3b/9q/BNI5SwVcWJRPPBAXiR//fVzbNhvv9xflyqNJX375iTPjBm5fHDuClhhhXzhPnlyLt9667wmD+R9n3qqaqekxdS37yZM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\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('Train confusion_matrix')\n",
    "plot_confusion_matrix(y_train,y_train_pred)\n",
    "print('Test confusion_matrix')\n",
    "plot_confusion_matrix(y_test,y_test_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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CUHybXP3OSUFERFJUFIQacGKiooYOXIkw4YN48gjj2TFihWJaXPmzOHAAw9k1113ZcCAAVx77bW4e2L6k08+SVlZGYMHD2bQoEFceumlTVGErF577TXOPPPMpg4jq+uvv57+/fszcOBApk6dmnaeZ555hj322INhw4Zx6qmnsnHjRgAeffRRhg8fzsiRIykrK+OFF14AoKKigjFjxsQTsLs3q79Ro0b5ppg8eZ7DT/2///14k94v0lhz585t6hC8Y8eOidff+ta3/LrrrnN397Vr13q/fv186tSp7u6+Zs0aHzNmjN9+++3u7v7GG29v+sJjAAAQgUlEQVR4v379fN68ee7uXlVV5RMmTNiisVVVVW32Mo477jifNWtWXtfZGHPmzPHhw4f7+vXrfeHChd6vXz/fuHFjnXmqq6u9V69e/vbbb7u7+9VXX+133XWXu7uvWrXKa2pq3N399ddf94EDBybed9ppp/kLL7yQdr3p9j2g3HM4xuruI5E8uPDCfzJr1v+26DJHjtyeW2/N/Wxx9OjRzJ49G4D77ruPfffdl0MOOQSA4uJibr/9dvbff3/OPfdcbrzxRq688koGDRoEQOvWrfne975Xb5mrV6/m/PPPp7y8HDPjJz/5CcceeyydOnVi9erVADz00EM89thjTJw4kdNOO42uXbvy2muvMXLkSCZPnsysWbPo0qULAP379+fFF1+kVatWnH322Xz44YcA3Hrrrey777511r1q1Spmz57NiBEjAJg5cyYXXngh69ato0OHDvzpT39i4MCBTJw4kccff5z169ezZs0annnmGW666SYefPBBNmzYwDHHHMPPfvYzAI4++mgWLVrE+vXr+f73v89ZZ52V8/ZN59FHH2X8+PG0a9eOvn370r9/f2bOnMno0aMT8yxbtox27dqx6667AnDwwQdz/fXXc8YZZ9CpU6fEfGvWrKlzveDoo4/m3nvvrbddNlfBJAX1fSSFrLq6mqeffpozzjgDCE1Ho0aNqjPPLrvswurVq/n888958803ueSSSxpc7rXXXkvnzp154403AFi+fHmD73nnnXeYNm0aRUVF1NTUMHnyZE4//XRefvll+vTpw3bbbcdJJ53ERRddxJe//GU+/PBDDj30UObNm1dnOeXl5QwbNiwxPGjQIKZPn07r1q2ZNm0aV1xxBQ8//DAAL730ErNnz6Zr16489dRTzJ8/n5kzZ+LujB07lunTp7Pffvtx991307VrV9atW8eee+7JscceS7du3eqs96KLLuLZZ5+tV67x48fzox/9qM64jz76iH322Scx3KtXLz766KM685SWllJVVUV5eTllZWU89NBDLFq0KDF98uTJXH755SxZsoTHH388Mb6srIyrrrqqwe3dWAWTFFRTkKbUmDP6LWndunWMHDmS999/n1GjRnHwwQcDodk4010qjbl7Zdq0aUyaNCkxvO222zb4nuOPP56iovA9HDduHNdccw2nn346kyZNYty4cYnlzp07N/Gezz//nFWrVlFSUpIY98knn9C9e/fE8MqVKzn11FOZP38+ZkZVVVVi2sEHH0zXrl0BeOqpp3jqqafYfffdgVDbmT9/Pvvttx+33XYbkydPBmDRokXMnz+/XlK45ZZbcts4UOcaTa3U7WtmTJo0iYsuuogNGzZwyCGH0Lr1F4fmY445hmOOOYbp06dz9dVXM23aNAB69OjBxx9/nHMsuYo1KZjZGOA3QBFwl7vfkDK9HXAPMApYBoxz9/fjiEVJQQpRhw4dmDVrFitXruSII45gwoQJXHDBBQwdOpTp06fXmXfhwoV06tSJkpIShg4dyquvvppomskkU3JJHpd6z3zHjh0Tr0ePHs2CBQuoqKjgkUceSZz51tTU8NJLL9GhQ4esZUte9tVXX80BBxzA5MmTef/999l///3TrtPdufzyy/nud79bZ3nPPfcc06ZN46WXXqK4uJj9998/7f3+jakp9OrVq85Z/+LFi9lxxx3rvXf06NH8+9//BkLSeuedd+rNs99++/Huu++ydOlSSktLWb9+fdbts6liu/vIzIqACcBhwBDgRDMbkjLbGcByd+8P3AL8Mq54lBSkkHXu3JnbbruNm2++maqqKk4++WReeOGFxFnnunXruOCCC7jssssA+MEPfsAvfvGLxMGppqaGX//61/WWe8ghh3D77bcnhmubj7bbbjvmzZuXaB7KxMw45phjuPjiixk8eHDirDx1ubNmzar33sGDB7NgwYLE8MqVK+nZsycAEydOzLjOQw89lLvvvjtxzeOjjz5iyZIlrFy5km233Zbi4mLeeustZsyYkfb9t9xyC7Nmzar3l5oQAMaOHcukSZPYsGED7733HvPnz2evvfaqN9+SJUsA2LBhA7/85S85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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_curve, auc\n",
    "fpr,tpr,ths = roc_curve(y_test,y_test_pred)\n",
    "auc_sc = auc(fpr, tpr)\n",
    "plt.plot(fpr, tpr, color='navy',label='ROC curve (area = %0.2f)' % auc_sc)\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver operating characteristic with test data')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "features = df_final_train.columns\n",
    "importances = clf.feature_importances_\n",
    "indices = (np.argsort(importances))[-25:]\n",
    "plt.figure(figsize=(10,12))\n",
    "plt.title('Feature Importances')\n",
    "plt.barh(range(len(indices)), importances[indices], color='r', align='center')\n",
    "plt.yticks(range(len(indices)), [features[i] for i in indices])\n",
    "plt.xlabel('Relative Importance')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Procedure and Observation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+---------------+--------------+-----------+----------------+---------------+\n",
      "|     Model     | n_estimators | max_depth | Train f1-Score | Test f1-Score |\n",
      "+---------------+--------------+-----------+----------------+---------------+\n",
      "| Random Forest |     121      |     14    |     0.964      |     0.921     |\n",
      "|    XGBOOST    |     109      |     10    |     0.992      |     0.926     |\n",
      "+---------------+--------------+-----------+----------------+---------------+\n"
     ]
    }
   ],
   "source": [
    "from prettytable import PrettyTable \n",
    "x = PrettyTable()\n",
    "x.field_names = [\"Model\", \"n_estimators\", \"max_depth\", \"Train f1-Score\",\"Test f1-Score\"]\n",
    "x.add_row(['Random Forest','121','14','0.964','0.921'])\n",
    "x.add_row(['XGBOOST','109','10','0.992','0.926'])\n",
    "print(x)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) Initially we have only a couple feature in our data-set. First we performed exploratory data analysis on our given data set such as number of followers and followees of each person.\n",
    "\n",
    "2) Then after we generated some datapoints which were not present in our given data-set, since we had only class label 1 data.\n",
    "\n",
    "3) Then we did some feature engineering on dataset like finding shortest path, kartz centrality, jaccard distances, page rank, preferential attachements etc.\n",
    "\n",
    "4) After performing eploratory data analysis and feature engineering we splitted whole dataset into train and test and performed random forest and xgboost taking f1-score as our metric.\n",
    "\n",
    "5) At the end we plotted confusion matrix and pretty-table for both algorithm and found best hyperparameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
